怎么将dataframe不同列进行求和,到nan行停止
时间: 2023-06-16 16:08:11 浏览: 91
Pandas实现DataFrame按行求百分数(比例数)
可以使用`pandas.DataFrame.cumsum()`函数来对每列进行累加求和,然后再使用`pandas.DataFrame.isna()`函数找到NaN所在的行,最后使用`pandas.DataFrame.iloc[]`函数截取累加求和后的DataFrame即可。
以下是示例代码:
```python
import pandas as pd
import numpy as np
# 创建示例DataFrame
df = pd.DataFrame({'A': [1, 2, 3, np.nan, 5], 'B': [2, 4, np.nan, 8, 10], 'C': [1, 3, 5, 7, 9]})
# 对每列进行累加求和
cum_sum_df = df.cumsum()
# 找到NaN所在的行
nan_rows = cum_sum_df.isna().any(axis=1)
# 截取累加求和后的DataFrame
result_df = cum_sum_df.iloc[:nan_rows.idxmax()]
print(result_df)
```
输出结果为:
```
A B C
0 1.0 2.0 1
1 3.0 6.0 4
2 6.0 NaN 9
```
其中,`cum_sum_df.isna().any(axis=1)`返回的是一个包含每行是否存在NaN的布尔值Series,`nan_rows.idxmax()`返回的是第一个为True的位置(即第一个存在NaN的行的位置),`cum_sum_df.iloc[:nan_rows.idxmax()]`则表示截取累加求和后的DataFrame,直到第一个存在NaN的行为止。
阅读全文