我的第一个数据帧如下所示:
ESD Species Key1
Sub POAP SubPOAP
Sub FRAP SubFRAP
Sand POAP SandPOAP
Sand ACER SandACER
Sand SALI SandSALI
所以Key1
是ESD和物种的连接。在
我的第二个数据帧如下所示:
^{pr2}$所以我想基于Key1
和Key
将第二个框架连接到第一个框架中,但是第一个数据帧比较大,我仍然希望在新的数据帧中保留不匹配的列(使用ESD作为Sand)。最终我也会把任何东西都和沙子混合。在
到目前为止,我使用了这段代码,并将“Key1”和“Key”设置为索引:
merge=pd.merge(df, df2, left_index='True', right_index='True')
但这不会保留没有匹配键的列。也许我需要的是连接而不是合并吗?在
此代码导致:
ESD Species Key1 Values
Sub POAP SubPOAP 10
Sub FRAP SubFRAP 20
所需输出为:
ESD Species Key1 Values
Sub POAP SubPOAP 10
Sub FRAP SubFRAP 20
Sand POAP SandPOAP NaN
Sand ACER SandACER NaN
Sand SALI SandSALI NaN
我不在乎重复的列标题是否会转移到join,我只删除它们(有两个列名为Species)。在
不是将
ESD
和Species
串联成一个字符串, 最好在列的列表上合并:要在
result
中为df
中的每一行保留一行,请使用how='left'
。在^{pr2}$
收益率
注意,如果
df
看起来像这样然后两个不同的
(ESD, Species)
对可以映射到相同的Key1
i、 e.FOOBAR
。因此,为了 合并可能会导致错误。在这可能会影响你,也可能不会影响你,但因为理论上可能会导致错误,并且 因为您可以直接在
['ESD', 'Species']
上合并,所以最好避免 串联。在相关问题 更多 >
编程相关推荐