我有两个数据框,df1
和df2
df1
skuid brand
0 ax12 C
1 zm23 F
2 zm23 NaN
3 zm24 NaN
df2
sid brand
0 ax11 G
1 ax12 C
2 zm23 F
3 zm23 NaN
我需要根据
skuid
和sid
的值组合两个数据帧。df1.merge(df2, how='right')
skuid brand sid
0 ax12 C ax12
1 zm23 F zm23
2 zm23 NaN zm23
3 zm24 NaN zm23
4 NaN G ax11
如何获得如下所示的输出?
skuid brand sid
0 ax12 C ax12
1 zm23 F zm23
2 zm23 NaN NaN
3 zm24 NaN NaN
4 NaN NaN zm23
5 NaN G ax11
行ID 2和3上
NaN
的sid
值,以及
zm23
中df2
的另一行 最佳答案
你为什么要这样做?我认为您无法一次完成此操作。如果您使用“正确”,则会从df1中丢失“ zm24”。如果您使用left,那么您将从df2中丢失“ ax11”。因此,您需要使用“外部”,但不会执行您想要的操作。 U将具有原始的'zm23 NaN zm23',因为您通过skuid和sid合并。它们在原始方面是相同的。 U可以合并您的框架,然后进行其他操作。
而且我认为您可以尝试使用'left_on'和'right_on',但这无法解决您的问题。
如果您在那使用,则在3个原始位置中没有'sid'。
df1.merge(df2, how='outer', left_on=['skuid', 'brand'], right_on=['sid', 'brand'])
UPD:我找到了您的解决方案。在合并之前,U可以为nans填充不同的值。
df1 = df1.fillna(0)
df2 = df2.fillna(1)
df = df1.merge(df2, how='outer', left_on=['skuid', 'brand'], right_on=['sid', 'brand'])
如果您愿意,可以将其转换回去。
关于python - Pandas 合并具有南值的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51946412/