python - 每行包含整个数据集中特定值的计数的列

标签 python pandas

<分区>

我正在尝试创建一个新列,其中每一行将包含整个数据集中特定值的计数。

我有以下数据框:

import pandas as pd
df = pd.DataFrame({'a': [1,2,3,4,5], 'b': [2,3,4,5,6], 'c':['or','ta','fl','or','fl'], 'd':[5,9,1,3,7]})

我想添加一个列 e,它计算每一行 c 列的值在数据集中出现的次数,如下所示:

df = pd.DataFrame({'a': [1,2,3,4,5], 'b': [2,3,4,5,6], 'c':['or','ta','fl','or','fl'], 'd':[5,9,1,3,7], 'e':[2,1,2,2,2]})

   a  b   c  d  
0  1  2  or  5  
1  2  3  ta  9  
2  3  4  fl  1  
3  4  5  or  3  
4  5  6  fl  7  

我试图遍历整个数据集,但没有成功:

def getSum(c):
return df[df==c].sum()

def createE(df):
for index, row in df.iterrows():
    row['e'] = getSum(row['c'])

return df


   a  b   c  d  e
0  1  2  or  5  2
1  2  3  ta  9  1
2  3  4  fl  1  2
3  4  5  or  3  2
4  5  6  fl  7  2

最佳答案

使用GroupBy.transform为此,使用 'count' 作为 transform 的参数:

df['e']=df.groupby('c')['c'].transform('count')

现在:

print(df)

是:

   a  b   c  d  e
0  1  2  or  5  2
1  2  3  ta  9  1
2  3  4  fl  1  2
3  4  5  or  3  2
4  5  6  fl  7  2

关于python - 每行包含整个数据集中特定值的计数的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53801428/

相关文章:

python - 如何在 sqlalchemy 中使用 SQL Server 的函数 - CAST(datetime as date)?

python - 如何使用 Pandas 查找两个不同日期时间之间的最小值?

python-3.x - 在 Pandas 中的get_dummies之后保留NaN值

python - Excel错误可能是pandas写的还是大数据导致的?需要建议

python - 我想引用另一个 python 脚本中的变量

python - 在Python中播放声音,并能够在播放中将其切断

python - Pandas 数据帧 : normalize one JSON column and merge with other columns

python - 将数据框列名称绘制为标签

python - 如何在 Django 中使用复选框在 MySQL 中输入 1 或 0?

python - 如何用一个条目(到已经训练好的网络)喂养 pybrain ffn?