通过查找 NaN 将 pandas 数据帧拆分为多个数据帧

Split pandas dataframe into multiple dataframes by looking for NaN

我正在尝试将一个数据帧从 excel 拆分为多个数据帧。

数据框如下所示:

Name Value Unit
0 AA 10 mm
1 BDC 20 mm
2 NaN NaN NaN
3 AFD 60 mm
4 AKW 18 cm
5 TDF 0,5 mm
6 NaN NaN NaN
7 AA 10 mm
8 FB 65 l

我已经在 python 中正确存储了整个数据帧,但是我不知道如何在存在 NaN 行时将数据帧拆分为多个数据帧。我试图遍历 .iterrows() 但它只给我行,直到第一个 NaN 行。将行合并到新数据框中的最佳做法是什么?感谢任何帮助。

content = pd.read_excel(filepath, sheet_name='Parameter'))
right_tables = content[['Name', 'Value', 'Unit']]

for i, row in right_tables.head().iterrows():
    print(row)

控制台输出:

Name      AA
Value     10
Unit      mm
Name: 0, dtype: object
Name     BDC
Value     20
Unit      mm
Name: 1, dtype: object
Name     NaN
Value    NaN
Unit     NaN
Name: 2, dtype: object

我需要的结果应该是这样的: | |名称 |价值 |单位 | |--|--|--|--| |0|AA|10|毫米| |1|下死点|20|毫米|

Name Value Unit
0 AFD 60 mm
1 AKW 18 cm
2 TDF 0,5 mm
Name Value Unit
0 AA 10 mm
1 FB 65 l

删除缺失的行 DataFrame.dropna and groupby by Series created by Series.isna with Series.cumsum:

for g, df in df.dropna().groupby(df['Name'].isna().cumsum()):
    print (df.reset_index(drop=True))
  Name Value Unit
0   AA    10   mm
1  BDC    20   mm
  Name Value Unit
0  AFD    60   mm
1  AKW    18   cm
2  TDF   0,5   mm
  Name Value Unit
0   AA    10   mm
1   FB    65    l

如果需要DataFrame列表:

dfs= [df.reset_index(drop=True) for g,df in df.dropna().groupby(df['Name'].isna().cumsum())]
print (dfs)
[  Name Value Unit
0   AA    10   mm
1  BDC    20   mm,   Name Value Unit
0  AFD    60   mm
1  AKW    18   cm
2  TDF   0,5   mm,   Name Value Unit
0   AA    10   mm
1   FB    65    l]