我有一個如下所示的資料框:
A B C
a1 b1 c1
a1 b2 c2
a2 b1 c3
a2 b2 c4
我想把它轉換成類似的東西:
A B1 B2
a1 c1 c2
a1 c1 c2
a2 c3 c4
a2 c3 c4
B 中重復的值是其值在 C 列中的列名稱。我希望它們是資料框的列
事實上,資料集是通過壓平樹創建的,有更多的列,每個列都是一個內部節點。第一列是根,C 是葉子
這些是我的一些嘗試:
cmd = "b1,b2"
cond = ""
for c in cmd.split(","):
cond = "|" f" (df['B'] == '{c}') "
cols = [c] cols
new_col = main_df[main_df['B'] == c]['C']
df[c] = new_col
df = df[eval(cond)]
但是,它不起作用。
uj5u.com熱心網友回復:
嘗試:
df.pivot('A', columns='B')
你只會得到兩行,但你的四行無論如何都是重復的兩行。
A C
B b1 b2
0 a1 c1 c2
1 a2 c3 c4
uj5u.com熱心網友回復:
df.pivot可以解決這種情況。但是,我想添加我想要的列,所以我有這個解決方案:
df = df[df["B"] == "b1"]
df = df.reset_index(drop=True)
for c in desired_cols.split(","):
new_col = main_df[main_df['B'] == c]['C']
new_col = new_col.reset_index(drop=True)
df[c] = new_col
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/376285.html
上一篇:如何在Pandas/Python中使用DataFrame撰寫函式?
下一篇:Pyspark-合并資料框
