我有一个数据框,其中包含两列用户反馈。
第一列来自调查的多项选择答案。该列的每一行都是他们选择的答案的列表。
下一列是年龄范围的类别。因此一行将包含用户颜色偏好和年龄范围的列表。
例如
what colours do you like? age
['yellow','orange','green'] 18-25
['yellow'] 18-25
['blue','green','red','orange'] 26-30
['blue','red'] 26-30
我希望获得列表中每种颜色的单独计数,然后按年龄范围划分 期望的输出:
age colour count
18-25 yellow 2
18-25 orange 1
18-25 green 1
26-30 blue 2
26-30 green 1
26-30 red 2
26-30 orange 1
提前致谢!
最佳答案
将数据帧的索引设置为 age
,然后使用 Series.explode
在专栏 what colours do you like?'
然后使用groupby
上level=0
并使用 value_counts
聚合该系列:
df1 = (
df.set_index('age')['what colours do you like?'].explode()
.rename('color').groupby(level=0).value_counts().reset_index(name='count')
)
结果:
print(df1)
age color count
0 18-25 yellow 2
1 18-25 green 1
2 18-25 orange 1
3 26-30 blue 2
4 26-30 red 2
5 26-30 green 1
6 26-30 orange 1
关于python,计算数据框中列表的唯一列表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63299860/