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
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
添加回答
举报