繁体   English   中英

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

[英]Split pandas dataframe into multiple dataframes by looking for NaN

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

数据框如下所示:

姓名 价值 单元
0 AA 10 毫米
1 BDC 20 毫米
2
3 AFD 60 毫米
4 AKW 18 厘米
5 TDF 0,5 毫米
6
7 AA 10 毫米
8 脸书 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|BDC|20|毫米|

姓名 价值 单元
0 AFD 60 毫米
1 AKW 18 厘米
2 TDF 0,5 毫米
姓名 价值 单元
0 AA 10 毫米
1 脸书 65 l

按 DataFrame.dropna 删除缺失的行, DataFrame.dropnaSeries.cumsum创建的Series.isna分组:

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

如果需要数据框列表:

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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM