簡體   English   中英

如何根據列行拆分數據框

[英]How to split dataframe on based on columns row

我有一個 excel 文件,數據框有 20 行。 幾行之后又是列名行,我想根據列名行划分數據框。

這是示例:

x
0
1
2
3
4
x
23
34
5
6

預期輸出為:

df1
x
0
1
2
3
4
df2
x
23
34
5
6

考慮到您的列名是col ,您可以首先將數據cumsumcol上進行cumsum ,其中值等於xdf['col'].eq('x').cumsum() ,然后為每個組創建一個數據df['col'].eq('x').cumsum()通過使用df.iloc[]將該組的第二行和列中的值作為該組的第一個值並將它們保存在字典中:

d={f'df{i}':pd.DataFrame(g.iloc[1:].values,columns=g.iloc[0].values) 
                   for i,g in df.groupby(df['col'].eq('x').cumsum())}

print(d['df1'])
 x
0  0
1  1
2  2
3  3
4  4

print(d['df2'])
    x
0  23
1  34
2   5
3   6

使用df.index[df['x'] == 'x']查找列名再次出現的行索引。 然后,根據找到的索引將數據幀分成 2 個

df = pd.DataFrame(columns=['x'], data=[[0], [1], [2], [3], [4], ['x'], [23], [34], [5], [6]])

df1 = df.iloc[:df.index[df['x'] == 'x'].tolist()[0]]
df2 = df.iloc[df.index[df['x'] == 'x'].tolist()[0]+1:]

你沒有提到這是你的數據集的樣本。然后你可以試試這個

import pandas as pd 

df1 = []
df2 = []

df1 = pd.DataFrame({'df1': ['x', 0, 1, 2, 3, 4]})

df2 = pd.DataFrame({'df2': ['x', 23, 34, 5, 6]})

display(df1, df2)

暫無
暫無

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

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