簡體   English   中英

將 pandas 'timed' dataframe 重組為單行以允許連接

[英]Reorganize pandas 'timed' dataframe into single row to allow for concat

我有一個參與者的數據數據框(存儲在 excel 個文件中),每個參與者看起來像

df1 = pd.DataFrame([['15:05', '15:06', '15:07', '15:08'], [7.333879016553067, 8.066897471204006, 7.070168678977272, 6.501888904228463], [64.16712081101915, 65.08486717007806, 67.22483766233766, 64.40328265521458],
[114.21879259980525, 116.49792952572476, 113.26931818181818, 108.35424424108551]]).T

df1.columns  = ['Start', 'CO', 'Dia', 'Sys']
開始 一氧化碳 直徑 系統
0 15:05 7.33388 64.1671 114.219
1個 15:06 8.0669 65.0849 116.498
2個 15:07 7.07017 67.2248 113.269
3個 15:08 6.50189 64.4033 108.354

我需要將它拆成一行,這樣我就可以將所有不同的參與者讀入一個unstack我已經嘗試使用這個問題的答案,以及這個問題答案來得到這樣的東西(多索引數據框)

時間 1 時間 2
一氧化碳 直徑 系統 一氧化碳 直徑 系統
0 7.33388 64.1671 114.219 8.0669 65.0849 116.498

但我最終得到的是

('15:05', 'CO') ('15:05', '直徑') ('15:05', '系統') ('15:06', 'CO') ('15:06', '直徑') ('15:06', '系統')
0 7.33388 64.1671 114.219
1個 8.0669 65.0849 116.498

因此,正如您所見,每一分鍾仍然是一個新行,但現在它們的排列方式更加無用。

誰能提供建議?

假設每一行都是Time 0Time 1等。我們可以在 MultiIndex 中使用我們的頂級索引

# convert index to string and add "Time "
df1.index = "Time " + df1.index.astype(str)

然后按索引分組,取除“開始”(第 0 個元素)之外所有列的最大值(或其他一些保留原始值的聚合),堆疊,轉換回幀,然后轉置

out = df1.groupby(df1.index)[df1.columns[1:]].max().stack().to_frame().T

輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM