【问题标题】:Group Names and Average the Corresponding Values (Pandas)分组名称和平均相应值(熊猫)
【发布时间】:2018-03-14 10:16:52
【问题描述】:

数据存储在 csv 文件中。我使用 pd.read_csv 将数据从 csv 加载到 python 中。我正在寻找一种方法来对空格前具有相同名字的名称进行分组,然后使用 pandas 对 Score1 和 Score2 中的相应值求和。

df = pd.DataFrame({'Names':['Jason','Jason S','Dan','Dan S'],'Score1':[30,np.nan,20,40],'Score2':[40,60,30,np.nan]})

Names         Score1    Score2
Jason         30        40
Jason S       NaN       60
Dan           20        30
Dan S         40        NaN 

我想看到如下数据框的结果。

Names         Score1     Score2
Jason         15         50
Dan           30         15

到目前为止,我有以下代码,它只是进行分组,没有别的。

import pandas as pd

df = pd.read_csv('test.csv')
df1 = pd.DataFrame(df.groupby(['Names'], as_index=False)['Score1', 'Score2'].sum().mean())
print(df1)

我会很感激任何提示。提前致谢。

【问题讨论】:

  • 你能告诉我们你到目前为止有什么吗?在代码方面
  • @Jesse。刚刚添加了代码。我猜这不是正确的做法。
  • 你可以试试 df.groupby('Names').apply(lambda x: x.sum()) 吗?
  • @Jesse。我试过了,它把 Jason 分组,而不是 Dan。

标签: python-3.x pandas


【解决方案1】:

您可以使用str.split 获取组密钥

df.fillna(0).groupby(df.Names.str.split(' ',expand=True)[0]).mean()
Out[352]: 
       Score1  Score2
0                    
Dan      30.0    15.0
Jason    15.0    50.0

【讨论】:

  • @CullenDuYaw yw ~! :-)
猜你喜欢
  • 2022-08-16
  • 2018-12-21
  • 2018-02-01
  • 2015-09-11
  • 2015-10-09
  • 2017-01-28
  • 2016-03-03
  • 2017-06-26
相关资源
最近更新 更多