我有以下資料框:
[['M', 'A', '0', '0.2', '0.2', '0.2'],
[nan, nan, nan, '0.3', '0.3', '1'],
[nan, nan, nan, '1.4', '3.2', '32'],
[nan, nan, nan, nan, nan, nan],
[nan, nan, nan, nan, nan, nan],
['sex', 'test', 'conc', 'sugar', 'flour', 'yeast'],
['M', 'A', '3', '1.2', '1.2', '1.2'],
[nan, nan, nan, '1.3', '1.3', '2'],
[nan, nan, nan, '2.4', '4.2', '33'],
[nan, nan, nan, nan, nan, nan],
['sex', 'test', 'conc', 'sugar', 'flour', 'yeast'],
['M', 'A', '6', '2.2', '2.2', '2.2'],
[nan, nan, nan, '2.3', '2.3', '3'],
[nan, nan, nan, '3.4', '5.2', '34']]
當一行都是 nans 時,我想將它拆分為多個資料幀。我已經從下面的鏈接中嘗試了以下代碼,它按照我想要的方式執行,但它似乎回傳了拆分串列。如何將每個資料框放入其單獨的資料框中,以便我有多個資料框?
特種部隊
df_list = np.split(df, df[df.isnull().all(1)].index)
for df in df_list:
print(df, '\n')
uj5u.com熱心網友回復:
IIUC,您可以使用:
m = df.isna().all(axis=1)
dfs = [g for k,g in df[~m].groupby(m.cumsum())]
輸出:
[ 0 1 2 3 4 5
0 M A 0 0.2 0.2 0.2
1 NaN NaN NaN 0.3 0.3 1
2 NaN NaN NaN 1.4 3.2 32,
0 1 2 3 4 5
5 sex test conc sugar flour yeast
6 M A 3 1.2 1.2 1.2
7 NaN NaN NaN 1.3 1.3 2
8 NaN NaN NaN 2.4 4.2 33,
0 1 2 3 4 5
10 sex test conc sugar flour yeast
11 M A 6 2.2 2.2 2.2
12 NaN NaN NaN 2.3 2.3 3
13 NaN NaN NaN 3.4 5.2 34]
獲取單個資料框:
dfs[0]
0 1 2 3 4 5
0 M A 0 0.2 0.2 0.2
1 NaN NaN NaN 0.3 0.3 1
2 NaN NaN NaN 1.4 3.2 32
uj5u.com熱心網友回復:
這是一種解決方法
dfs=[] # list to hold the DF
# code that you already have. which is to split the DF on null rows
df_list = np.split(df, df[df.isnull().all(1)].index)
# Iterate over the df_list and append to dfs
for idx, data in enumerate(df_list):
dfs.append(data)
dfs[0]
0 1 2 3 4 5
0 M A 0 0.2 0.2 0.2
1 NaN NaN NaN 0.3 0.3 1
2 NaN NaN NaN 1.4 3.2 32
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/526152.html
標籤:Python熊猫数据框
上一篇:將熊貓框架的列連接成一維陣列
