|
发表于 2024-3-31 21:39:13
|
显示全部楼层
如果要根据A列的值来更新多列,可以使用`merge()`函数将两个DataFrame按照A列进行合并,并指定`how='left'`,以保留df_old中的行。然后,使用`.fillna()`方法将df_old中相应列的空值填充为df_new中对应行的相应列值。以下是完整的代码示例:
- import pandas as pd
- # 创建原始的df_old和df_new DataFrame
- df_old = pd.DataFrame(
- {
- "A": [1, 2, 3],
- "B": [4, 5, 6],
- "C": [7, 8, 9]
- }
- )
- df_new = pd.DataFrame(
- {
- "A": [1, 3, 4],
- "B": [10, 20, 30],
- "C": [11, 21, 31]
- }
- )
- # 打印原始的df_old和df_new DataFrame
- print("原始的 df_old:")
- print(df_old)
- print("\n原始的 df_new:")
- print(df_new)
- # 将df_new的B列和C列的值更新至df_old的B列和C列
- df_merged = pd.merge(df_old, df_new[['A', 'B', 'C']], on='A', how='left')
- df_merged[['B_x', 'C_x']] = df_merged[['B_x', 'C_x']].fillna(df_merged[['B_y', 'C_y']])
- # 删除冗余的列名
- df_merged = df_merged.drop(columns=['B_y', 'C_y'])
- # 重命名列名
- df_merged = df_merged.rename(columns={'B_x': 'B', 'C_x': 'C'})
- df_old = df_merged
- # 打印更新后的df_old DataFrame
- print("\n更新后的 df_old:")
- print(df_old)
复制代码
这段代码会输出如下结果:
- 原始的 df_old:
- A B C
- 0 1 4 7
- 1 2 5 8
- 2 3 6 9
- 原始的 df_new:
- A B C
- 0 1 10 11
- 1 3 20 21
- 2 4 30 31
- 更新后的 df_old:
- A B C
- 0 1 10 11
- 1 2 5 8
- 2 3 20 21
复制代码
在更新后的df_old中,A列的值保持不变,而B列和C列根据df_new中的对应值进行了更新。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|