为了账号安全,请及时绑定邮箱和手机立即绑定

如何计算 pandas 中列表列中值的总出现次数?

如何计算 pandas 中列表列中值的总出现次数?

呼啦一阵风 2024-01-24 20:54:10
我有这个数据框,我想计算该列中菜肴出现的次数(列表)。   |preferred_dishes    ----------------------------------------------1   |[Comida Variada, Comida Brasileira, Lanches]2   |[Salgados, Lanches, Comida Japonesa]10  |[Comida Chinesa, Comida Japonesa]11  |[Pizza, Comida Brasileira, Lanches]15  |[Comida Italiana, Comida Brasileira, Fruto...我试过这个:test = pd.Series([x for item in df_dishes.preferred_dishes for x in item]).value_counts()还有别的办法吗?
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

您可以使用explode以下命令来获得相同的效果pd.Series():


df.preferred_dishes.explode().value_counts()

包含摘录的输出:


Lanches              3

Comida Brasileira    3

Comida Japonesa      2

Salgados             1

Fruto...             1

Comida Variada       1

Pizza                1

Comida Chinesa       1

Comida Italiana      1

Name: preferred_dishes, dtype: int64


查看完整回答
反对 回复 2024-01-24
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

之前的答案非常适合,pandas >= 0.25因为Series.explode仅在版本 0.25.0 的更高版本中工作。例如,我使用的是 pandas 版本 0.24.2。

顺便说一句,你可以尝试一下,以了解你的 pandas 和相关包的版本:

pd.show_versions()

因此,您可能对以下解决方案感兴趣,而不考虑 pandas 版本。

counts = (df.reset_index(df.columns.drop('preferred_dishes',1).tolist())

    .preferred_dishes.str.replace('[', '')

    .str.replace(']', '')

    .str.split(',', expand=True)

    .stack()

    .value_counts()

    )

counts

输出:


 Lanches              3

 Comida Brasileira    3

 Comida Japonesa      2

 Fruto...             1

Salgados              1

Pizza                 1

Comida Chinesa        1

Comida Variada        1

Comida Italiana       1

dtype: int64

或者,更简单地说:


counts = pd.Series(df.preferred_dishes.str.replace('[', '')

                             .str.replace(']', '')

                             .str.split(',').sum()).value_counts()

counts

输出:


 Lanches              3

 Comida Brasileira    3

 Comida Japonesa      2

 Fruto...             1

Salgados              1

Pizza                 1

Comida Chinesa        1

Comida Variada        1

Comida Italiana       1

dtype: int64


查看完整回答
反对 回复 2024-01-24
  • 2 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信