我希望將列標題轉換為在 Python 中具有計數的值(計數是每個唯一日期和 ID 的每個列標題下的值編號)
資料
id date dd aa
hey Q1 23 2 1
hey Q2 23 2 1
ok Q3 23 2 1
ok Q4 23 2 3
想要的
id date type
hey Q1 23 dd
hey Q1 23 dd
hey Q1 23 aa
hey Q2 23 dd
hey Q2 23 dd
hey Q2 23 aa
ok Q3 23 dd
ok Q3 23 dd
ok Q3 23 aa
ok Q4 23 dd
ok Q4 23 dd
ok Q4 23 aa
ok Q4 23 aa
ok Q4 23 aa
正在做
df.pivot(index="id", columns="Date", values=["dd"])
任何建議表示贊賞
uj5u.com熱心網友回復:
您可以set_index stack獲取一系列重復,然后使用Series.repeatwhich 重復索引中的所有內容(這是您在堆疊之后需要的所有資訊)。在.drop去除這表明許多重復怎么是必要的列。
s = df.set_index(['id', 'date']).rename_axis(columns='type').stack()
df1 = s.repeat(s).reset_index().drop(0, axis=1)
id date type
0 hey Q1 23 dd
1 hey Q1 23 dd
2 hey Q1 23 aa
3 hey Q2 23 dd
4 hey Q2 23 dd
5 hey Q2 23 aa
6 ok Q3 23 dd
7 ok Q3 23 dd
8 ok Q3 23 aa
9 ok Q4 23 dd
10 ok Q4 23 dd
11 ok Q4 23 aa
12 ok Q4 23 aa
13 ok Q4 23 aa
uj5u.com熱心網友回復:
使用melt:
out = df.melt(['id', 'date'], var_name='type')
out = out.reindex(out.index.repeat(out.pop('value'))).reset_index(drop=True)
輸出:
>>> out
id date type
0 hey Q1 23 dd
1 hey Q1 23 dd
2 hey Q2 23 dd
3 hey Q2 23 dd
4 ok Q3 23 dd
5 ok Q3 23 dd
6 ok Q4 23 dd
7 ok Q4 23 dd
8 hey Q1 23 aa
9 hey Q2 23 aa
10 ok Q3 23 aa
11 ok Q4 23 aa
12 ok Q4 23 aa
13 ok Q4 23 aa
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357501.html
上一篇:清理csv檔案的正確方法
