如何使用Pandas函数基于另一DataFrame更新列值?
用Pandas基于另一DataFrame更新指定列内容
构造示例数据
先创建对应DataFrame:
import pandas as pd # 表1 df1 = pd.DataFrame({ 'Crops': ['Potato', 'Cabbage', 'Tomato', 'Potato'], 'Entry Time': ['2022-03-01', '2022-03-02', '2022-03-03', '2022-03-04'], 'Duration': [0, 0, 0, 0] }) # 表2 df2 = pd.DataFrame({ 'Crops': ['Potato', 'Cabbage', 'Tomato'], 'Duration': [30, 20, 25] })
方法1:使用map()函数
把表2转换成以Crops为键、Duration为值的字典,通过表1的Crops列映射获取对应值,直接覆盖原Duration列:
# 构建Crops到Duration的映射字典 duration_map = df2.set_index('Crops')['Duration'].to_dict() # 更新df1的Duration列 df1['Duration'] = df1['Crops'].map(duration_map)
方法2:使用merge()函数
通过左连接关联两个表,用表2的Duration值替换表1对应列,最后整理数据:
# 左连接两个表,保留df1所有行 merged_df = df1.merge(df2, on='Crops', how='left', suffixes=('_old', '')) # 替换Duration列 df1['Duration'] = merged_df['Duration']
执行任意一种方法后,df1的Duration列会按表2的值更新,最终结果如下:
| Crops | Entry Time | Duration |
|---|---|---|
| Potato | 2022-03-01 | 30 |
| Cabbage | 2022-03-02 | 20 |
| Tomato | 2022-03-03 | 25 |
| Potato | 2022-03-04 | 30 |
内容的提问来源于stack exchange,提问作者zhe yi soo
相关产品推荐
相关产品推荐

