python - 如何根据多个条件将值插入数据框?逻辑问题

标签 python pandas

我有两个数据框:

df1 包含“状态”、“日期”、“数字”列

DF1

df2,其中包含“state”、“specialDate”列(一个州对应一个特定日期,每个州仅提及一次)

DF2

最后,我想要一个包含“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/

相关文章:

python - 如何在 Python 中模拟字典

python - 当字典发生变化时保存它

python - 从差值 != 2 的列表中返回值

python - 连接具有相同 id 的 pandas DataFrame 行

python - Seaborn 一张图上的两个地 block : x-values are is off by one

python - 将多列乘以 Pandas 中的固定值

python - Django 迁移 : relation does not exist

python - 查找两列之间相同行的数量

python - 一起使用 BeautifulSoup 和 Pandas

python - 拆分列并使用 pandas 命名它们