Python 熊猫的Excel索引与匹配

Python 熊猫的Excel索引与匹配,python,pandas,Python,Pandas,我得到了一张这种格式的excel表格 DATE AREA BEAU EFFORT SEASON VESSEL P/S 0 2016-04-01 SE LANTAU 1 16.24 SPRING STANDARD31516 P 1 2016-04-01 SE LANTAU 2 10.23 SPRING STANDARD31516 P 2 2016-04-01 SE LANTAU 1

我得到了一张这种格式的excel表格

    DATE       AREA        BEAU EFFORT  SEASON  VESSEL         P/S
0   2016-04-01  SE LANTAU   1   16.24   SPRING  STANDARD31516   P
1   2016-04-01  SE LANTAU   2   10.23   SPRING  STANDARD31516   P
2   2016-04-01  SE LANTAU   1   4.82    SPRING  STANDARD31516   S
3   2016-04-01  SE LANTAU   2   2.98    SPRING  STANDARD31516   S
4   2016-04-01     LAMMA    1   2.92    SPRING  STANDARD31516   P
    DATE      STG # TIME    HRD SZ  AREA  BEAU PSD EFFORT TYPE NORTHING EASTING SEASON BOATASSOC.P/S
0   2016-04-06  1   1025    12  W LANTAU    2   58  ON  HKCRP   813713  802792  SPRING  NONE    S
1   2016-04-06  2   1113    3   W LANTAU    4   27  ON  HKCRP   806173  802043  SPRING  NONE    S
2   2016-04-06  3   1345    2   SW LANTAU   2   ND  OFF HKCRP   805606  803300  SPRING  NONE    NaN
3   2016-04-14  1   1613    4   W LANTAU    2   74  ON  HKCRP   808800  800864  SPRING  NONE    S
4   2016-04-20  1   1339    4   W LANTAU    3   ND  OFF HKCRP   805930  801929  SPRING  NONE    NaN
我得到了另一张excel表格,格式是这样的

    DATE       AREA        BEAU EFFORT  SEASON  VESSEL         P/S
0   2016-04-01  SE LANTAU   1   16.24   SPRING  STANDARD31516   P
1   2016-04-01  SE LANTAU   2   10.23   SPRING  STANDARD31516   P
2   2016-04-01  SE LANTAU   1   4.82    SPRING  STANDARD31516   S
3   2016-04-01  SE LANTAU   2   2.98    SPRING  STANDARD31516   S
4   2016-04-01     LAMMA    1   2.92    SPRING  STANDARD31516   P
    DATE      STG # TIME    HRD SZ  AREA  BEAU PSD EFFORT TYPE NORTHING EASTING SEASON BOATASSOC.P/S
0   2016-04-06  1   1025    12  W LANTAU    2   58  ON  HKCRP   813713  802792  SPRING  NONE    S
1   2016-04-06  2   1113    3   W LANTAU    4   27  ON  HKCRP   806173  802043  SPRING  NONE    S
2   2016-04-06  3   1345    2   SW LANTAU   2   ND  OFF HKCRP   805606  803300  SPRING  NONE    NaN
3   2016-04-14  1   1613    4   W LANTAU    2   74  ON  HKCRP   808800  800864  SPRING  NONE    S
4   2016-04-20  1   1339    4   W LANTAU    3   ND  OFF HKCRP   805930  801929  SPRING  NONE    NaN
如果两个表之间的日期、面积、BEU和p/S匹配,我想将第一个表的努力列中的数字添加到表2中


我应该联接、合并还是映射这两个表?

您可以同时使用“合并”和“联接”

第一列groupby col1、col2和最后一列

# My assumption is col1 + col2 + col_last when used as index cannot be duplicated
temp = df_2.groupby(['col1','col2','col_last']).first()
# df is the dataframe in which you want the extra column
df = df.merge(temp,left_on=['col1','col2','col_last'],right_index=True,how='left')

有一个主要问题,您想合并重复的列吗
2016年4月6日,西大屿山S
是重复的,也在第二个df2中。我想做一个类似excel中的索引和匹配功能的操作。但是有多个条件(第1列、第2列和最后一列),我已经尝试了您的解决方案,但它不起作用。你能看到我修改过的问题吗。希望能提供更多信息。只需使用这一行df3=df2.merge(df1[['DATE','AREA','beu','P/S','efforce']],on=['DATE','AREA','beu','P/S'],如何class='left')就可以了。它不起作用的原因是我在内容中获得了一些空间,并且两个数据帧之间不一致。在我删除空格后,它就可以工作了。df4=pd.merge(观察,努力['DATE','AREA','beu','P/S','effort']],on=['DATE','AREA','beu','P/S'],how='left')这相当于你的代码???