這是輸入
| Type - I | Type - II | Type - I | Type - II |
|----------|-----------|----------|-----------|
| 560 | 189 | 128 | 244 |
| 379 | 460 | 357 | 679 |
| 238 | 568 | 125 | 147 |
| 389 | 357 | 780 | 459 |
這是所需的輸出
| Type - I | Type - II | | |
|----------|-----------|---|---|
| 560 | 189 | | |
| 128 | 244 | | |
| 379 | 460 | | |
| 357 | 679 | | |
| 238 | 568 | | |
| 125 | 147 | | |
| 389 | 357 | | |
| 780 | 459 | | |
嘗試了很多方法,但無法做到。
uj5u.com熱心網友回復:
您可以洗掉重復的列和stack
:
(df.set_axis(pd.MultiIndex.from_frame(df.groupby(axis=1, level=0)
.cumcount().reset_index()),
axis=1)
.stack()
#.reset_index(drop=True) # uncomment if a clean index is needed
)
輸出:
index Type - I Type - II
0
0 0 560 189
1 128 244
1 0 379 460
1 357 679
2 0 238 568
1 125 147
3 0 389 357
1 780 459
uj5u.com熱心網友回復:
據我了解,您想將第 3 列和第 4 列拆分為第 1 列和第 2 列的行。
以硬編碼的方式:
1-您可以宣告一個新的熊貓框架,它有 2 列和 (2 * your previous_row)。
2- 然后將 Type-I 和 Type-II 分配給偶數行。
3- 并且,左 Type-I 和 Type-II 到奇數行。
uj5u.com熱心網友回復:
這是一種方法:
(df.stack()
.to_frame()
.assign(cc = lambda x: x.groupby(level=1).cumcount())
.set_index('cc',append=True)
.droplevel(0)[0]
.unstack(level=0))
uj5u.com熱心網友回復:
另一種可能的解決方案,基于創建兩個索引序列(even
和odd
)的思想,然后將兩個資料幀塊連接起來,最后用序列創建一個新的索引evens odds
并按索引排序:
evens = [x for x in range(2*len(df)) if x % 2 == 0]
odds = [x for x in range(2*len(df)) if x % 2 != 0]
out = pd.concat([df.iloc[:,:2], df.iloc[:,2:]])
out.index = evens odds
out = out.sort_index()
輸出:
Type - I Type - II
0 560 189
1 128 244
2 379 460
3 357 679
4 238 568
5 125 147
6 389 357
7 780 459
uj5u.com熱心網友回復:
如果列是重復的,您可以通過進入 numpy 來在重塑中使用該模式:
cols = df.columns.unique()
new_df = df.to_numpy().reshape(-1, len(cols))
pd.DataFrame(new_df, columns = cols)
Type - I Type - II
0 560 189
1 128 244
2 379 460
3 357 679
4 238 568
5 125 147
6 389 357
7 780 459
另一種選擇是使用pyjanitor中的pivot_longer,對于這個特定的用例,您傳遞一個帶有組 (to ) 的正則運算式以names_pattern
將所需的列標簽聚合到新的組 (in names_to
) - 在這種情況下,我們希望保留列標簽,所以我們.value
用作占位符來啟動它:
# pip install pyjanitor
import pandas as pd
import janitor
df.pivot_longer(index = None,
names_to = '.value',
names_pattern = r"(. )",
sort_by_appearance=True)
Type - I Type - II
0 560 189
1 128 244
2 379 460
3 357 679
4 238 568
5 125 147
6 389 357
7 780 459
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/531554.html
標籤:熊猫