我有一个数据框列,它是字符串列表:
df['colors']
0 ['blue','green','brown']
1 []
2 ['green','red','blue']
3 ['purple']
4 ['brown']
Run Code Online (Sandbox Code Playgroud)
我想要得到的是:
'blue' 2
'green' 2
'brown' 2
'red' 1
'purple' 1
[] 1
Run Code Online (Sandbox Code Playgroud)
在不知道自己在做什么的情况下,我什至设法数出了整列中的字符数
b 5
[ 5
] 5
Run Code Online (Sandbox Code Playgroud)
ETC。
我认为这很酷,但我不知道解决方案
最佳选择:df.colors.explode().dropna().value_counts().
但是,如果您还想对空列表 ( []) 进行计数,请使用Method-1.B/C类似于Quang Hoang在评论中建议的内容。
您可以使用以下两种方法中的任何一种。
\n\n\n\n
explode --> dropna --> value_counts
list.extend --> pd.Series.value_counts## Method-1\n# A. If you don\'t want counts for empty []\ndf.colors.explode().dropna().value_counts() \n\n# B. If you want counts for empty [] (classified as NaN)\ndf.colors.explode().value_counts(dropna=False) # returns [] as Nan\n\n# C. If you want counts for empty [] (classified as [])\ndf.colors.explode().fillna(\'[]\').value_counts() # returns [] as []\n\n## Method-2\ncolors = []\n_ = [colors.extend(e) for e in df.colors if len(e)>0]\npd.Series(colors).value_counts()\nRun Code Online (Sandbox Code Playgroud)\n输出:
\ngreen 2\nblue 2\nbrown 2\nred 1\npurple 1\n# NaN 1 ## For Method-1.B\n# [] 1 ## For Method-1.C\ndtype: int64\nRun Code Online (Sandbox Code Playgroud)\nimport pandas as pd\n\ndf = pd.DataFrame({\'colors\':[[\'blue\',\'green\',\'brown\'],\n [],\n [\'green\',\'red\',\'blue\'],\n [\'purple\'],\n [\'brown\']]})\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
2627 次 |
| 最近记录: |