我有一个pandas Dataframe,其中一列充满了列表:
import pandas
df = pandas.DataFrame([[1, [a, b, c]],
[2, [d, e, f]],
[3, [a, b, c]]])我想做一个数据透视表,显示列表和出现次数的计数
List Count
[a,b,c] 2
[d,e,f] 1因为list是一个不可散列的类型,所以什么聚合函数可以做到这一点呢?
发布于 2021-01-13 13:38:55
您可以压缩行列表和计数列表,然后从zip对象创建一个dataframe:
import pandas
df = pandas.DataFrame([[1, ['a', 'b', 'c']],
[2, ['d', 'e', 'f']],
[3, ['a', 'b', 'c']]])
rows = []
counts = []
for index,row in df.iterrows():
if row[1] not in rows:
rows.append(row[1])
counts.append(1)
else:
counts[rows.index(row[1])] += 1
df = pandas.DataFrame(zip(rows, counts))
print(df)

发布于 2021-01-14 10:13:17
我最终使用的解决方案是:
import pandas
df = pandas.DataFrame([[1, ['a', 'b', 'c']],
[2, ['d','e', 'f']],
[3, ['a', 'b', 'c']]])
print(df[1])
df[1] = df[1].map(tuple)
#Thanks Ch3steR
df2 = pandas.pivot_table(df,index=df[1], aggfunc='count')
print(df2)https://stackoverflow.com/questions/65695935
复制相似问题