我讀了一個 csv 它有多個列。我要轉置
Date A B C
25/5/2019 25 765.3 896
26/5/2019 98 769
27/5/2019 27.6 453.2 98.6
我努力了
df2 = pd.melt(df, id_vars=['DateTime'],value_vars=['A','B','C'],
var_name='detail',value_name='')
df2 = df2.sort_values(['DateTime'])
它正在將列更改為行,但我有兩個問題。
它還添加了列名以及我不想要的值。我只需要價值觀
沒有列的順序。我想按順序轉置 col 。
電流輸出為
Date final values
25/5/2019 A 25
25/5/2019 C 896
25/5/2019 B 765.3
26/5/2019 B
26/5/2019 A 253
26/5/2019 C 769
27/5/2019 C 506
我想按順序轉置 col 總是從 A 然后 B 然后 C 開始。預期的輸出是。
Date final values
25/5/2019 25
25/5/2019 765.3
25/5/2019 896
26/5/2019 98
26/5/2019 null
26/5/2019 769
27/5//2019 203
任何幫助,將不勝感激。提前致謝
另外一點,我現在需要輸出列的最終值。我需要分配每個值屬于哪一列我有三列的代碼。例如 A=100,B=200,C=100。有什么方法可以在每列值旁邊列印代碼
Date final values code
25/5/2019 25 100
25/5/2019 765.3 200
25/5/2019 896 300
26/5/2019 98 100
26/5/2019 null 200
26/5/2019 769 300
27/5//2019 203 100
uj5u.com熱心網友回復:
DataFrame.stack從列名稱中洗掉第二級的替代解決方案DataFrame.droplevel:
df = (df.set_index('DateTime')[['A','B','C']]
.stack(dropna=False)
.droplevel(1)
.reset_index(name='final values'))
print (df)
DateTime final values
0 25/5/2019 25.0
1 25/5/2019 765.3
2 25/5/2019 896.0
3 26/5/2019 98.0
4 26/5/2019 NaN
5 26/5/2019 769.0
6 27/5/2019 27.6
7 27/5/2019 453.2
8 27/5/2019 98.6
uj5u.com熱心網友回復:
您可以使用底層陣列進行靈活的整形:
pd.DataFrame({'Date': df['Date'].repeat(df.shape[1]-1),
'final values': df.set_index('Date').to_numpy().ravel()})
要么:
pd.DataFrame({'Date': df['Date'].repeat(df.shape[1]-1),
'final values': df[['A', 'B', 'C']].to_numpy().ravel()})
輸出:
Date final values
0 25/5/2019 25.0
0 25/5/2019 765.3
0 25/5/2019 896.0
1 26/5/2019 98.0
1 26/5/2019 NaN
1 26/5/2019 769.0
2 27/5/2019 27.6
2 27/5/2019 453.2
2 27/5/2019 98.6
uj5u.com熱心網友回復:
前兩個答案的混合版本melt。melt您只需要在保持您的值有序之前轉置您的資料框:
out = (
df.set_index('Date').T.melt(value_name='final value', ignore_index=False) \
.assign(code=lambda x: x.index.map({'A': 100, 'B': 200, 'C': 300}))
.reset_index(drop=True)
)
print(out)
# Output
Date final value code
0 25/5/2019 25.0 100
1 25/5/2019 765.3 200
2 25/5/2019 896.0 300
3 26/5/2019 98.0 100
4 26/5/2019 NaN 200
5 26/5/2019 769.0 300
6 27/5/2019 27.6 100
7 27/5/2019 453.2 200
8 27/5/2019 98.6 300
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/443622.html
