如何将一个数据框拆分为两行后所有 NAN 值的两个数据框



我有一个数据框包含两个完全不同的数据集。数据集由所有 NAN 值的两行分隔。

我在下面提供了数据框的示例。

+----+--------------------------------+-------------+-----+-----+-----+-----+-----+-----+------------+-----+--------+-----+
| 13 | NaN                            | NaN         | NaN | NaN | NaN | NaN | NaN | NaN | Total Fees | NaN | 653    | NaN |
+----+--------------------------------+-------------+-----+-----+-----+-----+-----+-----+------------+-----+--------+-----+
| 14 | ExpensesnDate Description ... | NaN         | NaN | NaN | NaN | NaN | NaN | NaN | NaN        | NaN | NaN    | NaN |
+----+--------------------------------+-------------+-----+-----+-----+-----+-----+-----+------------+-----+--------+-----+
| 15 | NaN                            | NaN         | NaN | NaN | NaN | NaN | NaN | NaN | NaN        | NaN | NaN    | NaN |
+----+--------------------------------+-------------+-----+-----+-----+-----+-----+-----+------------+-----+--------+-----+
| 16 | NaN                            | NaN         | NaN | NaN | NaN | NaN | NaN | NaN | NaN        | NaN | NaN    | NaN |
+----+--------------------------------+-------------+-----+-----+-----+-----+-----+-----+------------+-----+--------+-----+
| 17 | Date                           | Description | NaN | NaN | NaN | NaN | NaN | NaN | NaN        | NaN | Amount | NaN |
+----+--------------------------------+-------------+-----+-----+-----+-----+-----+-----+------------+-----+--------+-----+

第 14 行是第一个数据集的最后一行,第 17 行是第二个数据集的第一行。

我想得到两个数据框,第一个在上面的第 14 行结束,第二个从上面的第 17 行开始。

我试图像这样拆分它们:

key = df.isnull().all(1)
dftopdata = df[:key] 
dfbottomdata = df[key:]

当我运行代码时,我收到一个错误,指出"无法使用这些索引器对类'pandas.core.indexes.range.RangeIndex'进行切片索引">

通过拆分行NaN捕获所有数据帧

is_row_nan = df.isnull().all(1)
is_two_row_nan = (is_row_nan & is_row_nan.shift(1))
dfs = [g for _, g in df.groupby(is_two_row_nan.cumsum())]

示例输入

df = pd.DataFrame(np.random.choice((1, np.nan), (10, 2)))
0    1
0  1.0  NaN
1  NaN  1.0
2  NaN  NaN
3  NaN  NaN
4  1.0  NaN
5  NaN  NaN
6  NaN  1.0
7  1.0  NaN
8  1.0  1.0
9  NaN  1.0

输出

dfs[0]
0    1
0  1.0  NaN
1  NaN  1.0
2  NaN  NaN

dfs[1]
0    1
3  NaN  NaN
4  1.0  NaN
5  NaN  NaN
6  NaN  1.0
7  1.0  NaN
8  1.0  1.0
9  NaN  1.0

最新更新