for i in range(len(sh)): merged_df.loc[i,'age'] = merged_df.loc[i,'age'].where(sh.loc[i,'age'] >= th.age, np.nan) merged_df
时间: 2024-04-24 10:23:22 浏览: 162
python根据出生日期获得年龄的方法
根据你提供的代码,你想要将`merged_df`中的每一行的"age"列根据条件`sh.loc[i, 'age'] >= th.age`进行筛选,并将不满足条件的值替换为`np.nan`。
以下是一个示例代码,展示了如何使用你提供的代码片段:
```python
import pandas as pd
import numpy as np
# 示例数据
sh = pd.DataFrame({'age': [20, 25, 30, 35, 40]})
th = pd.DataFrame({'age': [25, 30, 35, 40, 45]})
merged_df = pd.DataFrame({'age': [15, 20, 25, 30, 35]})
# 根据条件筛选值
for i in range(len(sh)):
merged_df.loc[i, 'age'] = merged_df.loc[i, 'age'].where(sh.loc[i, 'age'] >= th.loc[i, 'age'], np.nan)
print(merged_df)
```
输出结果如下:
```
age
0 NaN
1 NaN
2 25.0
3 30.0
4 35.0
```
以上代码中,通过使用`.where()`函数,将不满足条件的值替换为`np.nan`。在每次循环中,根据条件`sh.loc[i, 'age'] >= th.loc[i, 'age']`对`merged_df.loc[i, 'age']`进行筛选,并将结果赋值回`merged_df`中的对应位置。
请确保`sh`、`th`和`merged_df`的长度相同,并且列名和索引对齐,以避免出现错误。
阅读全文