【问题标题】:join data using substring from a column使用列中的子字符串连接数据
【发布时间】:2021-10-07 11:26:39
【问题描述】:

我有一个数据集df,如下所示:

mandant posnr   aufdat
9   120300001   13.01.20 00:00
9   180200017   13.02.20 00:00
9   180300010   03.02.20 00:00

我想将它与字典newDict['second']中的另一个数据集结合起来,如下所示:

mandant nr  jahr
0   1032    2016
0   1291    2016
0   5442    2016
0   5502    2016

通常,我会像这样进行内部连接:

df_merged = df.merge(newDict['second'], 
                                        left_on=['nrkreis_nr'],
                                        right_on=['nr'],
                                        how='inner')

但是,现在我需要使用两个条件执行连接。第一个是上面提到的,第二个是

newDict['second'].jahr = year of (df.aufdat)

来自df.aufdat col 的值最初类似于13.01.20 00:00。在这种情况下如何同时使用两个连接条件,尤其是因为我需要基于子字符串而不是完整字符串进行连接?

【问题讨论】:

    标签: python pandas dataframe join


    【解决方案1】:

    通过转换为日期时间和Series.dt.yeardf 中创建名为jahr 的新列,并在left_onright_on 参数中添加此列:

    df_merged = (df.assign(jahr = pd.to_datetime(df['aufdat'], format='%d.%m.%y %H:%M').dt.year)
                  .merge(newDict['second'], 
                         left_on=['nrkreis_nr','jahr'],
                         right_on=['nr','jahr']))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-17
      • 1970-01-01
      • 2017-04-24
      • 2018-12-29
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多