【发布时间】:2022-01-19 21:30:31
【问题描述】:
我正在尝试创建一个 pandas 多索引数据框,它是每列中唯一值的摘要。
除了创建这个数据框之外,还有更简单的方法来汇总这些信息吗?
无论哪种方式,很高兴知道如何完成这个代码挑战。谢谢你的帮助!这是玩具数据框和我尝试使用带有字典和 value_counts 数据框的 for 循环的解决方案。不确定是否可以在此处以某种方式合并 MultiIndex.from_frame 或 .from_product...
原始数据框:
data = pd.DataFrame({'A': ['case', 'case', 'case', 'case', 'case'],
'B': [2001, 2002, 2003, 2004, 2005],
'C': ['F', 'M', 'F', 'F', 'M'],
'D': [0, 0, 0, 1, 0],
'E': [1, 0, 1, 0, 1],
'F': [1, 1, 0, 0, 0]})
A B C D E F
0 case 2001 F 0 1 1
1 case 2002 M 0 0 1
2 case 2003 F 0 1 0
3 case 2004 F 1 0 0
4 case 2005 M 1 1 0
期望的结果:
unique percent
A case 100
B 2001 20
2002 20
2003 20
2004 20
2005 20
C F 60
M 40
D 0 80
1 20
E 0 40
1 60
F 0 60
1 40
我的 for 循环尝试失败:
def unique_values(df):
values = {}
columns = []
df = pd.DataFrame(values, columns=columns)
for col in data:
df2 = data[col].value_counts(normalize=True)*100
values = values.update(df2.to_dict)
columns = columns.append(col*len(df2))
return df
unique_values(data)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-84-a341284fb859> in <module>
11
12
---> 13 unique_values(data)
<ipython-input-84-a341284fb859> in unique_values(df)
5 for col in data:
6 df2 = data[col].value_counts(normalize=True)*100
----> 7 values = values.update(df2.to_dict)
8 columns = columns.append(col*len(df2))
9 return df
TypeError: 'method' object is not iterable
如果有什么明显的我遗漏了,请告诉我!对于 EDA 和 pandas 来说仍然相对较新,任何指针表示赞赏。
【问题讨论】:
标签: pandas dataframe unique multi-index hierarchical