我希望使用Python Pandas将行合并到一个大型Excel文件中。假设在Excel或csv文件中,我有:
Kelly | $400 | | | $20 |
Kelly | | $200 | | |
Kelly | | | $500 | |
John | | $2 | ($7) | |
John | | | | $10 |
我想结束:
Kelly | $400 | $200 | $500 | $20 |
John | | $2 | ($7) | $10 |
有一个简单的解决方案吗?预先感谢。
答案 0 :(得分:1)
听起来您正在寻找groupby:
import pandas as pd
import numpy as np
df = pd.DataFrame(
data={'Name' : ['Kelly', 'Kelly', 'Kelly', 'John', 'John'],
'col1' : [400, np.nan, np.nan, np.nan, np.nan],
'col2' : [np.nan, 200, np.nan, 2, np.nan],
'col3' : [np.nan, np.nan, 500, -7, np.nan],
'col4' : [20, np.nan, np.nan, np.nan, 10],})
print(df)
Name col1 col2 col3 col4
0 Kelly 400.0 NaN NaN 20.0
1 Kelly NaN 200.0 NaN NaN
2 Kelly NaN NaN 500.0 NaN
3 John NaN 2.0 -7.0 NaN
4 John NaN NaN NaN 10.0
print(df.groupby('Name').sum())
输出:
col1 col2 col3 col4
Name
John 0.0 2.0 -7.0 10.0
Kelly 400.0 200.0 500.0 20.0
编辑:如果您仅获得第一列的总和,则其他列的数据类型可能是非数字的。如果将groupby应用于整个数据帧,则每一列都会产生聚合函数结果。尝试使用df.info()来查看您的列是什么数据类型。