我有两个Dataframes
,如下所示:
DataFrame 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
DataFrame 2
ID COMMENT
1 Bad 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
看起来对我来说似乎很简单,但我无法弄明白。我上下阅读了Pandas文档,并搜索了SOF一段时间。
这就是我现在所拥有的。
#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)
我已经接近但看起来在Axis 1上的结论仍然保留了第二个ID'最后一栏。
编辑: 所以我现在关闭了,我正在使用它:
mergedPanda = indicatorPanda.merge(commentPanda, on='id', how='left')
但由于Dataframe2中有多行,我遇到了具有相同ID的重复行的问题。
所以,现在,我想要的最终结果是:
DataFrame 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
DataFrame 2
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 | 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的范围内。
答案 0 :(得分:2)
我认为Merge适用于您的情况。
dataframe3 = pd.merge(dataframe1, dataframe2, left_index=True, right_index=True)
答案 1 :(得分:2)
您的DataFrames
似乎没有ID
设置为索引,因此.merge()
将作为(see docs):
df3 = dataframe1.merge(dataframe2, on='ID', how='left)
pd.concat()
index
合并axis=1
,因此它应该正常工作(df.set_index('ID', inplace=True)
表示水平,而不是垂直组合)如果DataFrame
MENU (
ID,
NAME,
URL,
FATHER
)
public class Menu {
private int id;
private String name;
private String url;
private List<Menu> childMenu;
}
在合并(see docs)之前。