python,计算数据框中列表的唯一列表值
Posted
技术标签:
【中文标题】python,计算数据框中列表的唯一列表值【英文标题】:python, count unique list values of a list inside a data frame 【发布时间】:2020-11-27 16:14:54 【问题描述】:我有一个包含两列用户反馈的数据框。
第一列来自调查的多项选择答案。该列的每一行都是他们选择的答案的列表。
下一列是年龄范围的类别。所以一行将包含用户颜色偏好和年龄范围的列表。
例如
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
提前致谢!
【问题讨论】:
【参考方案1】:将数据帧的索引设置为age
,然后在what colours do you like?'
列上使用Series.explode
,然后在level=0
上使用groupby
,并使用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
【讨论】:
【参考方案2】:另一种选择:
df1 = df.apply(lambda x: [str(x[0][i]) + " " + str(x[1]) for i in range(len(x[0]))], axis = 1).agg("sum")
df1 = pd.DataFrame(np.unique(df1, return_counts = True), index = ["A","count"]).T
df1[["colour","age"]] = df1.A.str.split(expand = True)
df1 = df1.drop("A")
它应该输出:
df1
count age color
0 2 18-25 yellow
1 1 18-25 green
2 1 18-25 orange
3 2 26-30 blue
4 2 26-30 red
5 1 26-30 green
6 1 26-30 orange
【讨论】:
以上是关于python,计算数据框中列表的唯一列表值的主要内容,如果未能解决你的问题,请参考以下文章
如何在检查唯一值的同时将数据从一个表单插入到另一个表单的列表框中?