我有两个数据帧:
带有“状态”、“日期”、“编号”列的df1
带有“state”、“specificDate”列的df2(一个状态对应一个specificDate,每个状态只提及一次)
最后,我希望有一个包含“state”、“specificDate”、“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天您可以声明一个空数据框,并在其中插入过滤后的数据
要筛选数据,您可以遍历
df2
的所有行,并使用相同的state
名称在specificDate
列和specificDate+14
的日期之间设置掩码我已经用数据帧中的几个值创建了两个数据帧
df1
和df2
,并测试了上述过程输出:
更新的答案:
要仅显示特定日期和特定日期+14th date from
df1
的数据,我们应该更新上述代码片段的mask
输出:
在Eric的答案的第一行上稍微有点夸张,让问题变得简单一点,因为我不明白他为什么使用set_index和reset_index
相关问题 更多 >
编程相关推荐