给定两个数据框df1
和df2
,其中包含item_id-rating
和item_id-class
的信息:
df1:
B0006IYIMW 5.0
B000A56PUO 3.0
B000AMLQQU 4.0
B000OVNMGE 1.0
df2:
B0006IYIMW iphone
B000OVNMGE samsung
B000AMLQQU htc
B000A56PUO nokia
我希望合并df1
和df
以获取item_id-class-rating
的完整信息,因此生成的数据框应为:
B0006IYIMW iphone 5.0
B000OVNMGE samsung 1.0
B000AMLQQU htc 4.0
B000A56PUO nokia 3.0
请注意,两个数据框的顺序可能不同。
你能告诉我怎么做吗?提前谢谢!
答案 0 :(得分:4)
试试这个:
import pandas as pd
df1 = pd.DataFrame([['B0006IYIMW',5.0],['B000A56PUO', 3.0],['B000AMLQQU', 4.0],['B000OVNMGE', 1.0]],columns=('item_id','rating'))
df2 = pd.DataFrame([['B0006IYIMW','iphone'],['B000A56PUO', 'nokia'],['B000AMLQQU', 'htc'],['B000OVNMGE', 'samsung']],columns=('item_id','class'))
df_merged = df1.merge(df2,on='item_id')
print df_merged
答案 1 :(得分:1)
通常情况下,当我无法找到解决方案时,我开始破解自己的解决方案,当我获得许多糟糕的结果并最终获得正确的解决方案时,其他人已经发布了{{1解决方案:)无论如何它在这里
one-line
答案 2 :(得分:1)
import pandas as pd
idx = pd.Index(['B0006IYIMW', 'B000A56PUO', 'B000AMLQQU', 'B000OVNMGE'],
name='item-id')
df1 = pd.DataFrame([5., 3., 4., 1.],
columns=['rating'], index=idx)
df2 = pd.DataFrame(['iphone', 'samsung', 'htc', 'nokia'],
columns=['class'], index=idx)
df = pd.concat([df2, df1], axis=1)
print df
class rating
item-id
B0006IYIMW iphone 5.0
B000A56PUO samsung 3.0
B000AMLQQU htc 4.0
B000OVNMGE nokia 1.0