熊猫在合并时强制到数据帧中的后缀

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了熊猫在合并时强制到数据帧中的后缀相关的知识,希望对你有一定的参考价值。

它给了我重复/后缀的列。我看到的大多数问题是人们想要在数据后缀,但我希望与此相反。

到目前为止,这些列似乎没有用,它们似乎都以上一次合并中的NaN结尾。

我希望合并通过覆盖找到重复的列而工作,如果不存在则将该列添加到数据框中。我希望重写会根据合并的参数发生,但默认情况下似乎保留所有列并仅添加后缀。

示例:

data4 = {'col1': [1, 2], 'col2': [3, 4]}
df4 = pd.DataFrame(data=data4)

data5  = {'col1': [1, 2], 'col2': [3, 4], 'col3': [9, 2]}

df5 = pd.DataFrame(data=data5)

df_merged = pd.merge(df4, df5, how="outer", left_on="col1", right_on="col1")
   col1  col2_x  col2_y  col3
0     1       3       3     9
1     2       4       4     2


data6  = {'col1': [1, 2], 'col2': [3, 4], 'col3': [9, 2]}
df6 = pd.DataFrame(data=data6)

pd.merge(df6, df_merged, how="right", left_on="col1", right_on="col1")
   col1  col2  col3_x  col2_x  col2_y  col3_y
0     1     3       9       3       3       9
1     2     4       2       4       4       2

理想情况下,在最后一次合并中,我希望它根据参数覆盖左或右数据帧,而不是尝试保留数据并添加suffixes

答案

您需要的是combine_first

combine_first
另一答案

大熊猫中的合并类似于SQL中的'joins'。这将导致公用列被重命名为前缀,以保存2个合并数据帧的值。

根据您的情况,您想改为data4 = {'col1': [1, 2], 'col2': [3, 4]} df4 = pd.DataFrame(data=data4) data5 = {'col1': [1, 2], 'col2': [3, 4], 'col3': [9, 2]} df5 = pd.DataFrame(data=data5) data6 = {'col1': [1, 2], 'col2': [3, 4], 'col3': [9, 2]} df6 = pd.DataFrame(data=data6) print (df4.combine_first(df5).combine_first(df6)) col1 col2 col3 0 1 3 9.0 1 2 4 2.0 数据框。

以上是关于熊猫在合并时强制到数据帧中的后缀的主要内容,如果未能解决你的问题,请参考以下文章

将列表列表合并到数据框熊猫中

合并具有非唯一索引的多个熊猫数据集

熊猫数据框中的内部连接/合并比左数据框提供更多的行

熊猫合并意外产生后缀

拆垛一个多指标熊猫数据帧,同时保持相同的列

基于不同数据帧中的日期时间的子集熊猫数据帧