dataframe,如何通过列A和列B数据生成列C,使得:如果列A为缺失值、列B不是缺失值,那么生成列C=列B;如果列B为缺失值、列A不是缺失值,那么生成列C=列A;如果列B不是缺失值、列A也不是缺失值,那么生成列C=列A+列B;
时间: 2024-05-15 14:18:38 浏览: 71
Pandas 缺失数据处理的实现
您可以使用 pandas 库中的 apply 函数来实现该功能。具体操作如下:
```python
import pandas as pd
import numpy as np
# 创建一个示例 DataFrame
df = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [np.nan, 6, 7, np.nan]})
# 定义一个函数根据列A和列B生成列C的值
def func(row):
if np.isnan(row['A']) and not np.isnan(row['B']):
return row['B']
elif np.isnan(row['B']) and not np.isnan(row['A']):
return row['A']
else:
return str(row['A']) + ' ' + str(row['B'])
# 使用 apply 函数将该函数应用到每一行并生成一列新的C列
df['C'] = df.apply(func, axis=1)
# 输出生成的 DataFrame
print(df)
```
输出结果如下:
```
A B C
0 1.0 NaN 1.0
1 2.0 6.0 2.0 6.0
2 NaN 7.0 7.0
3 4.0 NaN 4.0
```
其中:
- 第一行 A 列为缺失值,B 列为 NaN,根据规则 C 列的值应该为 B 列的值,即 1.0;
- 第二行 A 列和 B 列都不是缺失值,根据规则 C 列的值应该为 A 列和 B 列拼接而成的字符串,即 2.0 6.0;
- 第三行 B 列为缺失值,A 列不是缺失值,根据规则 C 列的值应该为 A 列的值,即 7.0;
- 第四行 A 列为不是缺失值,B 列为 NaN,根据规则 C 列的值应该为 A 列的值,即 4.0。
阅读全文