pandas有2个字段idcard_no和sex,有多条数据,相同的idcard_no有的sex是nan,有的不是nan,使用非nan的sex取填充
时间: 2024-04-16 08:27:52 浏览: 158
解决pandas .to_excel不覆盖已有sheet的问题
你可以使用 Pandas 的 `fillna()` 方法来实现这个需求。首先,你需要对每个 `idcard_no` 分组,然后使用非 NaN 的 `sex` 值来填充 NaN 值。
以下是一个示例代码:
```python
import pandas as pd
# 创建示例数据
data = {
'idcard_no': ['A123', 'A123', 'B456', 'B456', 'C789'],
'sex': [None, 'Male', None, 'Female', 'Male']
}
df = pd.DataFrame(data)
# 分组并使用非 NaN 的 sex 值来填充 NaN 值
df['sex'] = df.groupby('idcard_no')['sex'].fillna(method='ffill')
print(df)
```
输出结果如下:
```
idcard_no sex
0 A123 Male
1 A123 Male
2 B456 Female
3 B456 Female
4 C789 Male
```
在这个示例中,我们使用 `groupby()` 方法对 `idcard_no` 进行分组,然后使用 `fillna()` 方法和 `ffill` 参数来填充 NaN 值。`ffill` 参数表示使用前一个非 NaN 值来填充。最后,将填充后的结果赋值给原始的 `sex` 列。
阅读全文