python - 使用 python/pandas 组合值
问题描述
我是 python/pandas 用户,对此有疑问。我有一个如下的 Excel 文件。
C1 C2 C3 C4 C5 C6 ID Value
0 aa ee ii mm aaaaa bbbb 1 100
1 bb ff jj nn cccc ddddd 2 50
2 aa ee ii mm eeee ffff 3 20
3 dd hh ll pp gggg hhhh 4 10
4 aa ee ii mm abcd efgh 5 5
5 bb ff jj nn aaaaa bbbb 6 2
重现代码——</p>
df = pd.DataFrame({'Value': [100,50,20,10,5,2],
'ID': [1,2,3,4,5,6],
'C1': ['aa','bb','aa','dd','aa','bb'],
'C2': ['ee','ff','ee','hh','ee','ff'],
'C3': ['ii','jj','ii','ll','ii','jj'],
'C4': ['mm','nn','mm','pp','mm','nn'],
'C5': ['aaaaa','cccc','eeee','gggg','abcd','aaaaa'],
'C6': ['bbbb','ddddd','ffff','hhhh','efgh','bbbb']})
某些行在 column1-4 中是重复的(例如 ID1、ID3 和 ID5 或 ID2 和 ID6 是重复的)。有没有办法合并重复的行?(我关注第1-4列,不关心第5&6列)
我想组合重复行的“值”并保留顶列的序列。例如,这是我想要制作的输出文件。
Value ID C1 C2 C3 C4 C5 C6
0 125 1 aa ee ii mm aaaaa bbbb
1 52 2 bb ff jj nn cccc ddddd
2 10 4 dd hh ll pp gggg hhhh
如果您能给我您的意见,我将非常感激。
解决方案
可能还有其他有效的方法,一种方法可能是:
创建
new_df
使其在Column1
首次出现时保持唯一值。然后,在分组后原始
df
得到总和Column1
并更新new_df
你可以试试如下图:
new_df = df.drop_duplicates(subset='Column1', keep='first').reset_index()
del new_df['index'] # remove extra index column after reset index
new_df['Value'] = df.groupby('Column1', as_index=False).sum()['Value']
print(new_df)
结果:
ID Value Column1 Column2 Column3 Column4 Column5 Column6
0 1 125 aa ee ii mm aaaaa bbbb
1 2 52 bb ff jj nn cccc ddddd
2 4 10 dd hh ll pp gggg hhhh
更新:
编辑后检查数据框:
new_df = df.drop_duplicates(subset='C1', keep='first').reset_index()
del new_df['index']
new_df['Value'] = df.groupby('C1', as_index=False).sum()['Value']
print(new_df)
结果:
C1 C2 C3 C4 C5 C6 ID Value
0 aa ee ii mm aaaaa bbbb 1 125
1 bb ff jj nn cccc ddddd 2 52
2 dd hh ll pp gggg hhhh 4 10
推荐阅读
- tsql - 试图理解这个 t-sql if 语句
- python - Python 子字符串搜索未按预期工作
- android - 有没有一种特殊的方法可以通过 arduino 通过 BLE 发送数据
- javascript - Puppeteer 中的滚动问题
- autodesk-forge - 如何通过 Autodesk-Data-Management-API 在 BIM360 中将先前的项目版本恢复为“当前”
- apache-spark - 为初学者安装 pyspark
- python - 反序列化小 gzip 文件时出现内存错误
- local-storage - jQuery 在页面加载之前加载 localstorage
- flutter - Flutter Provider - 小部件未订阅更新
- vba - 我无法使用 DAO 在 Access DB 中设置字段属性