如何使用数据帧对另一个数据帧的列执行groupby操作?
我有以下数据帧:
|col1|col2|col3|col4|col5|col6|col7
--------------------------------------
0 |1 |10 |10 |100 |100 |10 |100
1 |1 |10 |10 |100 |100 |10 |100
和
|name |group
---------------
0 |col1 |group1
1 |col2 |group2
2 |col3 |group2
3 |col4 |group3
4 |col5 |group3
5 |col6 |group2
6 |col7 |group3
我想使用第二个数据帧上的映射来对第一个数据帧进行分组和求和。我想获得
|group1|group2|group3
--------------------------
0 |1 |30 |300
1 |1 |30 |300
col2、col3和col6被求和在一起,因为它们被映射到组2。col4、col5和col7被求和在一起,因为它们被映射到组3。col1被映射到组1
要重新创建数据帧,请执行以下操作:
# initial dataframe
df = pd.DataFrame(
{
"col1": [1, 1],
"col2": [10, 10],
"col3": [10, 10],
"col4": [100, 100],
"col5": [100, 100],
"col6": [10, 10],
"col7": [100, 100],
}
)
# dataframe containing all the mappings
mapping = pd.DataFrame(
{
"name": ["col1", "col2", "col3", "col4", "col5", "col6", "col7"],
"group": ["group1", "group2", "group2", "group3", "group3", "group2", "group3"],
}
)
# dataframe I want to obtain
final = pd.DataFrame(
{
"group1": [1, 1],
"group2": [30, 30],
"group3": [300, 300],
}
)
使用索引。按列名称映射
,然后聚合总和:
s = mapping.set_index('name')['group']
final = df.groupby(df.columns.map(s), axis=1).sum()
print (final)
group1 group2 group3
0 1 30 300
1 1 30 300
或者先使用重命名
,然后聚合:
s = mapping.set_index('name')['group']
final = df.rename(columns=s).groupby(level=0, axis=1).sum()
print (final)
group1 group2 group3
0 1 30 300
1 1 30 300
如果映射中不存在值,则输出不同:
# dataframe containing all the mappings (removed last 2 values)
mapping = pd.DataFrame(
{
"name": ["col1", "col2", "col3", "col4", "col5"],
"group": ["group1", "group2", "group2", "group3", "group3"],
}
)
s = mapping.set_index('name')['group']
#only matched values are processing
final = df.groupby(df.columns.map(s), axis=1).sum()
print (final)
group1 group2 group3
0 1 20 200
1 1 20 200
#not matched columns are added to ouput and not changed
final = df.rename(columns=s).groupby(level=0, axis=1).sum()
print (final)
col6 col7 group1 group2 group3
0 10 100 1 20 200
1 10 100 1 20 200
我正面临这个问题,其中我有一个数据帧,比如: 和另一个数据帧: 现在我想要的是,将df2的列插入到df1的特定位置,这样df1就变成了(实际上一个新的df也会起作用): 我现在通过创建一个新的空df来实现这一点,然后迭代这两个df的列,然后依次添加每一列。这是低效的、丑陋的,并且违背了数据流的全部目的。所以我很想知道,这个已经有方法了吗?我不确定这样的问题是否已经在这里得到了回答,但我肯定我没有找
问题内容: 我必须合并两个数据框: df1 df2 我必须将两个数据框统一为一个数据框。我需要像这样的输出: 问题答案: 用途: 样品:
我有两个熊猫数据框 步骤2:对于flag=1的行,AA_new将计算为var1(来自df2)*组“A”和val“AA”的df1的'cal1'值*组“A”和val“AA”的df1的'cal2'值,类似地,AB_new将计算为var1(来自df2)*组“A”和val“AB”的df1的'cal1'值*组“A”和val“AB”的df1的'cal2'值 我的预期输出如下所示: 以下基于其他stackflow
我有以下数据帧: 我需要删除等于的行。最有效的方法是什么?
我有两个数据帧,其中一列名为。数据帧是从两名参与者同时录制的两个视频中提取的数据。由于跟踪失败,数据缺少一些帧(每个视频不同)。我想根据帧整数值取一个交点。 这里发布了一个类似的问题:熊猫——基于列条目的两个数据帧的交集,但接受的答案是连接,而不是交集。 已删除的行不在和 (我可以重置索引后,我完成处理) 我想首先得到两个数据帧的帧列的交集: 错误: 在获得两个数据帧中的帧索引后,我考虑执行以下操
我有点被困在提取一个变量的值和另一个变量的条件上。例如,以下数据帧: 当时,如何获取的值?每次提取的值时,都会得到一个对象,而不是字符串。