gpt4 book ai didi

python - 每年计算 pandas 数据框中的相似字符串值

转载 作者:行者123 更新时间:2023-12-04 01:23:27 24 4
gpt4 key购买 nike

具有以下数据集。我想计算某个字符串在某一年出现的次数。实际上,多年来我有一个更大的数据框。如何结合 groupby 方法并计算不同的字符串值?

df = pd.DataFrame(data={'col1':['A','B','D','A'],'col2':['B','C', 'E','E'],'col3':['C','D','',''],'col4':['D','E','','']}, index = ['01-01-2000','02-01-2000','01-01-2001','02-01-2001'])

           col1 col2 col3 col4
01-01-2000 A B C D
02-01-2000 B C D E
01-01-2001 D E
02-01-2001 A E

期望的结果:

           count
A 2000 1
A 2001 1
B 2000 2
B 2001 0
C 2000 2
C 2001 0
D 2000 2
D 2001 1
E 2000 1
E 2001 2

最佳答案

您可以在 DataFrame.assign 中创建新列 year , 然后通过 DataFrame.melt reshape , 通过 DataFrame.query 删除空字符串, 通过 GroupBy.size 获得计数, 通过 Series.unstack 添加缺失的类别和 DataFrame.stack最后一次使用 Series.reset_index :

df.index = pd.to_datetime(df.index)

df = (df.assign(year = df.index.year)
.melt('year', value_name='val')
.query("val != ''")
.groupby(['val','year'])
.size()
.unstack(fill_value=0)
.stack()
.reset_index(name='count')
)
print (df)
val year count
0 A 2000 2
1 A 2001 1
2 B 2000 2
3 B 2001 0
4 C 2000 2
5 C 2001 0
6 D 2000 1
7 D 2001 1
8 E 2000 1
9 E 2001 2

关于python - 每年计算 pandas 数据框中的相似字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62260877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com