rsj0315 发表于 2023-10-28 12:32:50

两个df之间关联,以某列数值进行更新字段数据


如图所示:
两个dataframe,
将df1中的列2数值按照df2中的num数据进行更新,关联字段是列1=code

isdkz 发表于 2023-10-28 12:33:22

您可以使用 pandas 库中的 merge 函数将两个DataFrame按照关联字段进行合并,然后使用 map 函数将df2中的num数据映射到df1中的列2,并进行更新。

下面是一个示例代码:

import pandas as pd

# 创建示例数据
data1 = {'code': ['A', 'B', 'C', 'D'],
         'value': }
df1 = pd.DataFrame(data1)

data2 = {'code': ['A', 'C'],
         'num': }
df2 = pd.DataFrame(data2)

# 将df1和df2按照code字段进行合并
merged_df = pd.merge(df1, df2, on='code', how='left')

# 使用map函数将df2中的num数据映射到df1中的value列,并进行更新
merged_df['value'] = merged_df['num'].map(lambda x: x if pd.notnull(x) else merged_df['value'])
merged_df.drop('num', axis=1, inplace=True)# 删除num列

# 打印更新后的结果
print(merged_df)


运行以上代码,输出的结果将是更新后的DataFrame,其中df1中的value列按照df2中的num数据进行了更新。

陶远航 发表于 2023-10-28 12:33:27

在Python的pandas库中,你可以使用merge或者map函数来实现这个需求。以下是一个示例:

首先,我们创建两个示例dataframe:

import pandas as pd

# 创建df1
data1 = {'列1': ['a', 'b', 'c', 'd', 'e'],
         '列2': }
df1 = pd.DataFrame(data1)

# 创建df2
data2 = {'code': ['a', 'b', 'c', 'd', 'e'],
         'num': }
df2 = pd.DataFrame(data2)


然后,我们可以使用merge函数将df1和df2合并,然后更新df1的'列2':

# 合并df1和df2
df = df1.merge(df2, left_on='列1', right_on='code', how='left')

# 更新df1的'列2'
df['列2'] = df['num']

# 删除不需要的列
df = df.drop(['code', 'num'], axis=1)


或者,我们也可以使用map函数来更新df1的'列2':

# 使用map函数更新df1的'列2'
df1['列2'] = df1['列1'].map(df2.set_index('code')['num'])


以上两种方法都可以实现你的需求,你可以根据你的实际情况选择使用哪一种。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
页: [1]
查看完整版本: 两个df之间关联,以某列数值进行更新字段数据