任何方式合并两个数据帧,但不合并所有的列? 我有两个数据帧,我想将一列合并到另一个数据帧。 我的数据是这样的
In [1]: left = pd.DataFrame({'key1':['a','b','c'], 'key2':['1','2','3'], 'v1':['january','january','january']}, index=[0,5,8]); left
Out[1]:
key1 key2 v1
0 a 1 january
5 b 2 january
8 c 3 january
In [2]: right = pd.DataFrame({'key1':['a','b','c'], 'key2':['1','2','3'], 'v1':['1<0xA4EB>','1<0xA4EB>','1<0xA4EB>'], 'new_value':[23,346,435]}); right
Out[2]:
key1 key2 v1 new_value
0 a 1 1<0xA4EB> 23
1 b 2 1<0xA4EB> 346
2 c 3 1<0xA4EB> 435
In [3]: pd.merge(left, right[['key1', 'key2', 'new_value']], on=['key1', 'key2'])
Out[3]:
key1 key2 v1 new_value
0 a 1 january 23
1 b 2 january 346
2 c 3 january 435
我选择了键列和新列,然后合并它们。 但我认为这种方式并不聪明。我想找到更简单的方法,如果有人知道这一点,请告诉我。
提前致谢。
答案 0 :(得分:0)
在这种情况下,您似乎只想在其中一个数据框中添加新列。如果是这种情况,为什么不直接将您想要的列附加到数据帧1,并将日期帧2的索引设置为等于数据帧1索引,或者创建dataframe2的副本并重新索引它?这是一个示例,我只需将df2中所需的列附加到df1。 (请注意,为了节省时间,我没有从df2完全复制你的代码,但你会得到这个概念):
import pandas as pd
left = pd.DataFrame({'key1':['a','b','c'], 'key2':['1','2','3'], 'v1':['january','january', 'january']}, index=[0, 5, 8])
right = pd.DataFrame({'new_value': [23, 346, 435]})
copy = right.index = left.index
left['new_value'] = right['new_value']
print(left)
这是你的输出:
key1 key2 v1 new_value
0 a 1 january 23
5 b 2 january 346
8 c 3 january 435
我觉得您可能希望将此作为潜在选项,以便将索引与df1保持一致。您的解决方案有效,但这只是一种方法,如果由于某种原因需要特定顺序的第一个数据帧,请保持索引的顺序。