如何在列中找到具有类似名称的单元格,并使用Python和DataFrame对其进行汇总
我有一个巨大的CVS文件,其中包含数据,我需要以非常具体的方式按列汇总单元格 我的数据帧是:如何在列中找到具有类似名称的单元格,并使用Python和DataFrame对其进行汇总,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个巨大的CVS文件,其中包含数据,我需要以非常具体的方式按列汇总单元格 我的数据帧是: import pandas as pd df = pd.DataFrame({'country': ['Brazil','Brazil','Brazil','Brazil','Brazil','Brazil','Chile'], 'city': ['Salvador','Salvador','Teresina','Teresina','Teresina','','Iquique'], 'name':['
import pandas as pd
df = pd.DataFrame({'country': ['Brazil','Brazil','Brazil','Brazil','Brazil','Brazil','Chile'], 'city': ['Salvador','Salvador','Teresina','Teresina','Teresina','','Iquique'], 'name':['Gabriela','Gabriela','Maria','Fernanda','Carla','Solange','Isabel'], 'salary':[10.11,20.0,13.5,9.4,1.2,4.0,2.1], 'bonus':[3.3,4.2,7.1,0.2,5.1,2.0,1.1]})
我需要按列name在单元格中查找名称相似的行,然后按列salary和列bonus进行汇总
输出表必须如下所示:
country city salary bonus
0 Brazil Salvador 30.11 7.5
1 Brazil Teresina 24.10 12.4
2 Brazil 4.00 2.0
3 Chile Iquique 2.10 1.11
谢谢你的帮助 您可以使用
groupby
按国家和城市进行分组,然后将所有剩余的数据相加:
new_df=df.groupby(['country','city']).agg({'salary':'sum','bonus':'sum})
这将返回您希望的数据帧
groupby
用于将国家/地区和城市相同的行匹配在一起,而agg
告诉您应用什么函数-在您的案例中求和仅城市和国家/地区上的一个groupby
就应该这样做:
df = df.groupby(by=['city', 'country'], as_index=False).sum()
print(df)
city country salary bonus
0 Brazil 4.00 2.0
1 Iquique Chile 2.10 1.1
2 Salvador Brazil 30.11 7.5
3 Teresina Brazil 24.10 12.4
您可以使用groupby(在['country','city']
上)并指定要计算(['salary','bonus']
上)总和的列,如下所示:
df.groupby(['country','city'], as_index=False)['salary', 'bonus'].sum()
country city salary bonus
0 Brazil 4.00 2.0
1 Brazil Salvador 30.11 7.5
2 Brazil Teresina 24.10 12.4
3 Chile Iquique 2.10 1.1
df.groupby(['country','city'], as_index=False)['salary', 'bonus'].sum()
country city salary bonus
0 Brazil 4.00 2.0
1 Brazil Salvador 30.11 7.5
2 Brazil Teresina 24.10 12.4
3 Chile Iquique 2.10 1.1