现在我想在pandas中合并两个DataFrame根据某一列是否非空决定选择保留哪个DataFrame的这一行并且去掉特定一列
要实现这个功能,可以使用pandas中的merge()函数和drop()函数。首先,使用merge()函数将两个DataFrame按照某一列进行合并。然后,根据某一列是否非空,使用drop()函数去掉特定一列。
以下是一个示例代码:
import pandas as pd
# 创建两个示例DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]})
df2 = pd.DataFrame({'A': [1, 2, 3],
'B': [10, 11, 12],
'C': [13, 14, 15]})
# 合并两个DataFrame,根据'A'列进行合并
merged_df = pd.merge(df1, df2, on='A', how='outer')
# 根据'B_y'列是否非空,选择保留哪个DataFrame的这一行
merged_df['B'] = merged_df['B_y'].fillna(merged_df['B_x'])
# 去掉'B_x'和'B_y'列
merged_df = merged_df.drop(['B_x', 'B_y'], axis=1)
print(merged_df)
输出结果为:
A C B
0 1 7 10.0
1 2 8 11.0
2 3 9 12.0
在这个示例中,df1和df2分别是两个示例DataFrame。使用merge()函数将它们按照'A'列进行合并,得到merged_df。然后,根据'B_y'列是否非空,选择保留哪个DataFrame的这一行,并赋值给'B'列。最后,使用drop()函数去掉'B_x'和'B_y'列,得到最终的结果
原文地址: https://www.cveoy.top/t/topic/iamU 著作权归作者所有。请勿转载和采集!