python - Pandas:Groupby 中的语法

标签 python pandas syntax pandas-groupby

我有以下数据集:

id window Rank    member
1    2      2        0
1    3      2        0 
2    3      1        0 
2    2      1        0

我想让成员在window==3时等于Rank。为此,我有以下命令:

df["member"]= df[df['window']==3]['Rank'][0]

但是,我想在按 id 分组的 groupby 语句中执行此操作。以下命令返回错误。这可能是我在这里缺少的一件简单的事情,但我无法解决如何在上面的命令中使用 groupby 的问题。非常感谢任何帮助。

df["member"]= df.groupby("id")[df[df['window']==3]['Rank'][0]]

最佳答案

您可以通过使用pandas.DataFrame.where来实现这一点 -

df = pd.DataFrame({'id':[1,1,2,2],'window':[2,3,3,2],'Rank':[2,2,1,1],'member':[0,0,0,0]})
=>
    Rank  id  member  window
0     2   1       0       2
1     2   1       0       3
2     1   2       0       3
3     1   2       0       2

df['member'] = df['Rank'].where(df['window']==3, df['member'])

print(df)
=>
   Rank  id  member  window
0     2   1       0       2
1     2   1       2       3
2     1   2       1       3
3     1   2       0       2

关于python - Pandas:Groupby 中的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44257750/

相关文章:

python - Python 中的字符串操作

python - Pandas:如何用另一个值替换 int 子字符串

python - 匹配 DataFrame 列中字符串中的独立单词

arrays - 如何比较 BASH 中的数组元素?

python - 如何使用python读取xml文件?

python - 如何绘制我的 groupby() 结果?

c - C支持函数表达式吗?

python - 一个非常短的代码,但 python 中的语法无效?

python - 在 bash 脚本中嵌入 python

Python:按时间间隔分组