Python 合并/合并问题
我有两个数据帧,如下所示: 数据帧1Python 合并/合并问题,python,csv,pandas,Python,Csv,Pandas,我有两个数据帧,如下所示: 数据帧1 ID VALUE DATE 1 google.com 12/28/2015 2 yahoo.com 12/28/2015 3 cnn.com 12/28/2015 4 facebook.com 12/28/2105 ID VALUE DATE 1 google.com 12/28/2015 2 yahoo.com 12/28/2015 3 cnn.com 1
ID VALUE DATE
1 google.com 12/28/2015
2 yahoo.com 12/28/2015
3 cnn.com 12/28/2015
4 facebook.com 12/28/2105
ID VALUE DATE
1 google.com 12/28/2015
2 yahoo.com 12/28/2015
3 cnn.com 12/28/2015
4 facebook.com 12/28/2105
数据帧2
ID COMMENT
1 Bad Stuff
2 Good Stuff
3 Werid Stuff
4 Crazy Stuff
ID COMMENT
1 Bad Stuff
1 Much Worse Stuff
2 Good Stuff
3 Werid Stuff
4 Crazy Stuff
期望的结果就在这里
ID VALUE DATE COMMENT
1 google.com 12/28/2015 Bad Stuff
2 yahoo.com 12/28/2015 Good Stuff
3 cnn.com 12/28/2015 Weird Stuff
4 facebooo.com 12/28/2015 Crazy Stuff
ID VALUE DATE COMMENT
1 google.com 12/28/2015 Bad Stuff | Much Worse Stuff
2 yahoo.com 12/28/2015 Good Stuff
3 cnn.com 12/28/2015 Weird Stuff
4 facebook.com 12/28/2015 Crazy Stuff
看起来,对我来说似乎很简单,但我不太明白。我已经上下阅读了熊猫的文档,搜索了一段时间
这是我现在拥有的
#Now, let's try to merge this data using Pandas
indicatorPanda = pd.read_csv('/tmp/i.csv')
commentPanda = pd.read_csv(open('/tmp/e.csv', 'rU'), encoding='utf-8')
mergedPanda = pd.concat([indicatorPanda, commentPanda], axis=1)
mergedPanda.to_csv('/tmp/output.csv', index=False, header=False)
我已经很接近了,但看起来轴1上的concating仍然保留第二个“ID”列在末尾
编辑:
所以我现在很接近了,我用这个:
mergedPanda = indicatorPanda.merge(commentPanda, on='id', how='left')
但是,由于Dataframe2中有多行,我遇到了具有相同ID的重复行的问题
现在,我希望我的最终结果是:
数据帧1
ID VALUE DATE
1 google.com 12/28/2015
2 yahoo.com 12/28/2015
3 cnn.com 12/28/2015
4 facebook.com 12/28/2105
ID VALUE DATE
1 google.com 12/28/2015
2 yahoo.com 12/28/2015
3 cnn.com 12/28/2015
4 facebook.com 12/28/2105
数据帧2
ID COMMENT
1 Bad Stuff
2 Good Stuff
3 Werid Stuff
4 Crazy Stuff
ID COMMENT
1 Bad Stuff
1 Much Worse Stuff
2 Good Stuff
3 Werid Stuff
4 Crazy Stuff
期望的结果就在这里
ID VALUE DATE COMMENT
1 google.com 12/28/2015 Bad Stuff
2 yahoo.com 12/28/2015 Good Stuff
3 cnn.com 12/28/2015 Weird Stuff
4 facebooo.com 12/28/2015 Crazy Stuff
ID VALUE DATE COMMENT
1 google.com 12/28/2015 Bad Stuff | Much Worse Stuff
2 yahoo.com 12/28/2015 Good Stuff
3 cnn.com 12/28/2015 Weird Stuff
4 facebook.com 12/28/2015 Crazy Stuff
有没有一种方法可以让评论以某种方式相互传达?我知道我们已经超出了常规SQL和Panda的范畴。我认为合并对您的案例很有效
dataframe3 = pd.merge(dataframe1, dataframe2, left_index=True, right_index=True)
看起来您的
DataFrames
没有将ID
设置为索引,因此.merge()
将作为:
您的
pd.concat()
在索引上进行合并,因此如果您在合并之前为这两个数据帧设置索引('ID',inplace=True)
,它应该可以正常工作(轴=1
表示水平,而不是垂直组合) 谢谢,这确实“管用”——但我对复制品有意见。我希望将项目添加到DataFrame 1中的行末尾,无论它们在DataFrame 2中出现多少次。这可能吗?听起来你想进行“左”合并?请参阅更新的答案。您可以指定按照sql
逻辑进行内部连接(默认),右侧连接
,左侧连接
,或外部连接。这似乎不起作用:mergedPanda=pd。merge(indicatorPanda,commentPanda,on='id',how='left')更新了我的问题。我认为您应该问一个新问题。