Python,Pandas:根据列值合并的某些行的总和

厄玛·埃尔玛斯里(Omer Elmasri)

我有以下pandas DataFrame示例。我试图让一些特殊行的总和。我已经研究了如何进行,但是找不到解决方案。你能给个方向吗?示例如下。我以为可以按组和求和,但是有列(Value_3)我不希望对它们求和,只是保持不变。值3是恒定值,因Machine和Shift值而异。

data = {'Machine':['Mch_1', 'Mch_1', 'Mch_1', 'Mch_1', 'Mch_2', 'Mch_2'], 'Shift':['Day', 'Day', 'Night', 'Night', 'Night', 'Night'], 'Value_1':[1, 2, 0, 0, 1, 3], 'Value_2':[0, 2, 2, 1, 3, 0], 'Value_3':[5, 5, 2, 2, 6, 6]} 

df = pd.DataFrame(data) 

输出:

Mch_1__Day__1__0__5

Mch_1__Day__2__2__5

Mch_1__Night_0__2__2

Mch_1__Night_0__1__2

Mch_2__Night_1__3__6

Mch_2__Night_3__0__6

我想拥有的就像数据框所示。

expected = {'Machine':['Mch_1', 'Mch_1', 'Mch_2'], 'Shift':['Day', 'Night', 'Night'], 'Value_1':[3, 0, 4], 'Value_2':[2, 3, 3]} 
df_expected = pd.DataFrame(expected) 
df_expected

输出:

Mch_1__Day__3__2__5

Mch_1__Night_0__3__2

Mch_2__Night_4__3__6

非常感谢你。

耶斯列尔

第一个想法是聚合函数的传递字典,最后一列是可能的用法firstlast函数:

d = {'Value_1':'sum','Value_2':'sum','Value_3':'first'}
df1 = df.groupby(['Machine','Shift'], as_index=False).agg(d)

如果需要更动态的解决方案,则意味着对所有没有Value_3创建字典的列求和dict.from_keys在list中未指定的所有列求和Index.difference

d = dict.fromkeys(df.columns.difference(['Machine','Shift', 'Value_3']), 'sum')
d['Value_3'] = 'first'
df1 = df.groupby(['Machine','Shift'], as_index=False).agg(d)
print (df1)
  Machine  Shift  Value_1  Value_2  Value_3
0   Mch_1    Day        3        2        5
1   Mch_1  Night        0        3        2
2   Mch_2  Night        4        3        6

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python Pandas:根据某些列比较数据框的行,并删除具有最低值的行

来自分类Dev

根据行值,Python,Pandas选择列

来自分类Dev

根据相同的列值合并csv的行

来自分类Dev

根据列值合并表的2行

来自分类Dev

根据相同的列值合并2行

来自分类常见问题

Python Pandas仅合并某些列

来自分类Dev

Python:如何根据某些条件合并和求和列表值

来自分类Dev

使用Pandas Python在某些列相同时如何合并数据时的行

来自分类Dev

SQL - 根据列中的值总和获取一对行

来自分类Dev

根据列值合并数据框中的行值

来自分类Dev

如何根据列中的某些值提取行?

来自分类Dev

根据行值合并Oracle中的多列

来自分类Dev

使用Pandas Python在某些列相同时合并行

来自分类Dev

Python Pandas-根据值的某些条件选择多级索引

来自分类Dev

根据某些值选择表的某些行

来自分类Dev

根据行值合并表

来自分类Dev

根据某些特定的列(熊猫)合并数据

来自分类Dev

基于某些列值的累积总和

来自分类Dev

根据列值合并列

来自分类Dev

根据vba的唯一值合并某些行。任何更快的方法?

来自分类Dev

Python Pandas根据索引值创建列

来自分类Dev

合并具有相同值和总和值的同一列和表中的行

来自分类Dev

根据列删除某些行

来自分类Dev

Google Spreadsheets总和或某些列的行

来自分类Dev

Google Spreadsheets总和或某些列的行

来自分类Dev

按键选择是某些行的总和的多列

来自分类Dev

将多个值合并到一个新列中的一行 Pandas Python

来自分类Dev

Pandas Python,根据行条件选择列

来自分类Dev

Pandas Python,根据行条件选择列