gpt4 book ai didi

python - 计算 Pandas 数据框中的值频率

转载 作者:太空宇宙 更新时间:2023-11-04 05:44:13 24 4
gpt4 key购买 nike

我有一个带有此设置的 pandas dataframe df

col1 col2
v1 i1
v1 i50
v2 i60
v2 i1
v2 i8
v10 i8
v10 i1
v10 i2
..

我想计算 col1 中有多少个元素具有 col2 的值。并使用此设置将结果存储到数据框中

col1 frequency
i1 80
i2 195
... ...

我试图在 Pandas 中做到这一点,

 item_frequency = pd.unique(relevant_data[relevant_data['col2'].isin(pd.unique(relevant_data['col2'].values.ravel()))]['col1'].values.ravel())

产生错误

raise ValueError('Lengths must match to compare')
ValueError: Lengths must match to compare

PS:我想以矢量化的方式来做这件事。

最佳答案

不太清楚你想要得到什么结果,所以如果你想 col1, col2, frequency - 那么你可以使用 groupby()size() :

In [5]: df.groupby(['col1', 'col2']).size()
Out[5]:
col1 col2
v1 i1 1
i50 1
v10 i1 1
i2 1
i8 1
v2 i1 1
i60 1
i8 1

如果您只想计算col2 的计数,那么value_counts()将工作:

In [6]: df['col2'].value_counts()
Out[6]:
i1 3
i8 2
i60 1
i2 1
i50 1
dtype: int64

更新

在您更新您的描述后,我发现如果每次交易可能不止一次有一个值,value_counts() 可能会给您错误的答案。但是你可以用 drop_duplicates() 解决这个问题:

In [9]: df.drop_duplicates()['col2'].value_counts()
Out[9]:
i1 3
i8 2
i60 1
i2 1
i50 1
dtype: int64

关于python - 计算 Pandas 数据框中的值频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32841581/

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