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
添加回答
舉報