在Df1索引上合并数据集

2024-05-13 21:17:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集(df1),我想从第二个数据集(df2)中填充数据。两个数据帧中只有一列重叠,我已将该列设置为df1和df2的索引,因此可以在索引上合并。你知道吗

df = pd.read_excel('Data.xlsx', sheetname= 'Dataset1')
df2 = pd.read_excel('Data.xlsx', sheetname= 'Dataset2')
df1.set_index("ORG_ID", inplace=True)
df2.set_index("ORG_ID", inplace=True)
df3 = df1.merge(df2.ix[:,df2.columns-df1.columns], left_index=True, right_index=True, how="outer")

我希望输出是一个新的数据集(df3),它列出了df1中的所有数据,包括索引(ORG\u id),并包含了df2中的所有新列,其中包含了基于df1中列出的ORG\u id的填充数据。 python在这里所做的似乎是给我一个新的dataframe(df3),为df1填充数据,然后将第二个数据集(df2)中的所有组织id添加到df1中的组织id之下,这不是我想要的。你知道吗

我也尝试过使用combine\ u第一,但似乎产生了类似的结果。你知道吗

df3= df1.combine_first(df2)


Dataset1 (df1)
ORG_ID  COUNTRY TOWN    STORE   PRODUCT PRICE
1   Spain   Madrid  Pink    Garment 100
2   Greece  Chania  White   Toy 200
3   U.K Manchester  Red Garment 300
4   Italy   Rome    Red Accessory   500
5   Spain   Marbella    Blue    Accessory   20
6   Greece  Chania  Green   Garment 25
7   U.K Manchester  Pink    Toy 36
8   Italy   Siena   Red Accessory   150
9   Spain   Barcelona   White   Toy 200
10  Greece  Corfu   Blue    Accessory   500

数据集2(df2)

ORG_ID  CUSTOMER    TYPE    PARENT  REGION
5   A   Pop Rose    Europe
10  A   Cry Tulip   Europe
24  C   Fig Lily    Europe
89  G   Pop Rose    Europe
6   R   Fig Lily    Europe
4   Y   Pop Rose    Europe
1   T   Fig Tulip   Europe
7   H   Pop Tulip   Europe
8   S   Fig Rose    Europe

数据集3(df3)-我想要什么

ORG_ID  COUNTRY TOWN    STORE   PRODUCT PRICE   CUSTOMER    TYPE    PARENT  REGION
1   Spain   Madrid  Pink    Garment 100 T   Fig Tulip   Europe
2   Greece  Chania  White   Toy 200 NaN NaN NaN NaN
3   U.K Manchester  Red Garment 300 NaN NaN NaN NaN
4   Italy   Rome    Red Accessory   500 Y   Pop Rose    Europe
5   Spain   Marbella    Blue    Accessory   20  A   Pop Rose    Europe
6   Greece  Chania  Green   Garment 25  R   Fig Lily    Europe
7   U.K Manchester  Pink    Toy 36  H   Pop Tulip   Europe
8   Italy   Siena   Red Accessory   150 S   Fig Rose    Europe
9   Spain   Barcelona   White   Toy 200 NaN NaN NaN NaN
10  Greece  Corfu   Blue    Accessory   500 A   Cry Tulip   Europe

Tags: 数据orgfigrednanpopdf1df2
1条回答
网友
1楼 · 发布于 2024-05-13 21:17:03

你不必在你的数据中set_index。可以将mergeon参数和how='left'一起使用。你知道吗

df1 = pd.read_excel('Data.xlsx', sheetname= 'Dataset1')
df2 = pd.read_excel('Data.xlsx', sheetname= 'Dataset2')

df3 = df1.merge(df2, how='left', on='ORG_ID')

输出:

   ORG_ID COUNTRY        TOWN  STORE    PRODUCT  PRICE CUSTOMER TYPE PARENT  \
0       1   Spain      Madrid   Pink    Garment    100        T  Fig  Tulip   
1       2  Greece      Chania  White        Toy    200      NaN  NaN    NaN   
2       3     U.K  Manchester    Red    Garment    300      NaN  NaN    NaN   
3       4   Italy        Rome    Red  Accessory    500        Y  Pop   Rose   
4       5   Spain    Marbella   Blue  Accessory     20        A  Pop   Rose   
5       6  Greece      Chania  Green    Garment     25        R  Fig   Lily   
6       7     U.K  Manchester   Pink        Toy     36        H  Pop  Tulip   
7       8   Italy       Siena    Red  Accessory    150        S  Fig   Rose   
8       9   Spain   Barcelona  White        Toy    200      NaN  NaN    NaN   
9      10  Greece       Corfu   Blue  Accessory    500        A  Cry  Tulip   

   REGION  
0  Europe  
1     NaN  
2     NaN  
3  Europe  
4  Europe  
5  Europe  
6  Europe  
7  Europe  
8     NaN  
9  Europe  

相关问题 更多 >