使用循环(python)合并两个不同的数据帧
我是python新手,遇到了以下问题 我有两个数据帧,其中第一个看起来像这样:使用循环(python)合并两个不同的数据帧,python,pandas,loops,dataframe,Python,Pandas,Loops,Dataframe,我是python新手,遇到了以下问题 我有两个数据帧,其中第一个看起来像这样: df1 code product 10-00 apple 10-10 banana 10-20 grape 10-00 cucumber 20-00 tomato 20-10 onion 20-10 garlic 第二个看起来像: df2 code colour 10-00 green 10-10 yellow 10-20 purple 20-00 red 20-10 white 我希
df1
code product
10-00 apple
10-10 banana
10-20 grape
10-00 cucumber
20-00 tomato
20-10 onion
20-10 garlic
第二个看起来像:
df2
code colour
10-00 green
10-10 yellow
10-20 purple
20-00 red
20-10 white
我希望有一个循环,它将给出以下数据帧
df
10-00 apple green
10-10 banana yellow
10-20 grape purple
10-00 cucumber green
20-00 tomato red
20-10 onion white
20-10 garlic white
但我真的不知道从哪里开始。。
有人遇到过这样的问题吗?试试这个()
示例:
import pandas as pd
df1 = pd.DataFrame({
'code': ['10-00','10-10'],
'product': ['apple','banana']
})
df2 = pd.DataFrame({
'code': ['10-00','10-10'],
'colour': ['green','yellow']
})
df = pd.merge(df1,df2,on=['code'],how='left')
print(df)
返回:
code product colour
0 10-00 apple green
1 10-10 banana yellow
不要使用循环,通过
code
列索引df2
数据帧,使用简单赋值
>>> df1.set_index('code', inplace=True)
>>> df2.set_index('code',inplace=True)
>>> df1
product
code
10-00 apple
10-10 banana
10-20 grape
10-00 cucumber
20-00 tomato
20-10 onion
20-10 garlic
>>> df2
colour
code
10-00 green
10-10 yellow
10-20 purple
20-00 red
20-10 white
然后简单地说:
>>> df1['colour'] = df2['colour']
>>> df1
product colour
code
10-00 apple green
10-10 banana yellow
10-20 grape purple
10-00 cucumber green
20-00 tomato red
20-10 onion white
20-10 garlic white
如果您不想用代码索引df1
(它会给您一个重复的索引),您可以始终使用:
>>> df1['colour'] = df2.loc[df1['code']].values
>>> df1
code product colour
0 10-00 apple green
1 10-10 banana yellow
2 10-20 grape purple
3 10-00 cucumber green
4 20-00 tomato red
5 20-10 onion white
6 20-10 garlic white
只要
df2
由'code'
索引,这可以通过set\u index
和join
实现:
df1.set_index('code').join(df2.set_index('code')).reset_index()
结果
code product colour
0 10-00 apple green
1 10-00 cucumber green
2 10-10 banana yellow
3 10-20 grape purple
4 20-00 tomato red
5 20-10 onion white
6 20-10 garlic white
解释
同时应用于set\u index('code')
和df1
,以便我们以后可以使用它来加入df2
- 默认情况下,
作为索引上的“左连接”应用join
应用于结果,以便检索具有所需列的数据帧reset_index
code product colour
0 10-00 apple green
1 10-00 cucumber green
2 10-10 banana yellow
3 10-20 grape purple
4 20-00 tomato red
5 20-10 onion white
6 20-10 garlic white