gpt4 book ai didi

python - reshape 表格以获得每个唯一值的频率

转载 作者:行者123 更新时间:2023-12-01 10:17:38 26 4
gpt4 key购买 nike

我有时间索引数据:

df2 = pd.DataFrame({ 'day': pd.Series([date(2012, 1, 1), date(2012, 1, 3), date(2012, 1, 5)]), 'a' : pd.Series(['A', 'B', 'C']),
'b': pd.Series(['C', 'E', 'C']), 'c': pd.Series(['E', 'F', 'A']), 'd': pd.Series(['B', np.nan, 'E'])})
df2 = df2.set_index('day')
df2

a b c d
day
2012-01-01 A C E B
2012-01-03 B E F NaN
2012-01-05 C C A E

reshape 表格以获得每个唯一值每天出现的频率的最佳方法是什么?

例如,A 在 1/01 和 1/05 出现一次。

所以期望的结果是:

            A   B   C   D   E   F  NaN
day
2012-01-01 1 1 1 0 1 0 0
2012-01-03 0 1 0 0 1 1 1
2012-01-05 1 0 2 0 1 0 0

非常感谢!

最佳答案

df3 = df2.melt('day').pivot_table(index = 'day', columns = 'value', aggfunc= np.size, fill_value = 0)
df3.columns = df3.columns.droplevel(0)
df3.columns.name = None


A B C D E F
day
2012-01-01 1 1 1 0 1 0
2012-01-03 0 1 0 0 1 1
2012-01-05 1 0 1 1 1 0

你可以做一个熔化,然后是一个枢轴来得到我相信你正在寻找的东西。

编辑


我忘记了这种方式更简洁

df3 = df2.melt('day')
df3 = pd.crosstab(df3['day'], df3['value'])
df3.columns.name = None

关于python - reshape 表格以获得每个唯一值的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59831626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com