我有两个数据框:
df1 包含“状态”、“日期”、“数字”列
df2,其中包含“state”、“specialDate”列(一个州对应一个特定日期,每个州仅提及一次)
最后,我想要一个包含“state”、“specialDate”、“number”列的数据集。另外,我想为每个特定日期添加 14 天,并获取这些日期的数字。
我试过了
df = df1.merge(df2, left_on='state', right_on='state')
df['newcolumn'] = np.where((df.state == df.state)& (df.date == df.specificDate), df.numbers)
df['newcolumn'] = np.where((df.state == df.state)& (df.date == df.specificDate+datetime.timedelta(days=14)), df.numbers)
但是我收到了这个错误: ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()
当我添加 all() 时,它仍然给我同样的错误
我觉得我的逻辑不正确。我还能如何将这些值插入到我的数据集中?
最佳答案
我认为您想使用 df2 作为连接的左侧。您可以使用 pd.DateOffset
添加 14 天。
# create dataset with specific date and specific date + 14
df2_14 = df2.set_index('state')['date'].apply(pd.DateOffset(14)).reset_index()
df = pd.concat([df2, df2_14])
# now join the values from df1
df = df.join(df1.set_index(['state', 'date']),
how='left',
on=['state', 'specificDate'])
关于python - 如何根据多个条件将值插入数据框?逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61872281/