![](/img/trans.png)
[英]Split a pandas dataframe into multiple dataframes if all rows are nan
[英]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.dropna
和Series.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.