【问题标题】:Resample the dataset based on 2 unique columns基于 2 个唯一列重新采样数据集
【发布时间】:2019-10-21 07:11:54
【问题描述】:

我有一个数据集,其中提取了 2 列:date_1 和 date_2。数据框的大小为 800 个条目。

我有另一个 dataframe1 有 20000 个带有 date_1 和 date_2 的条目,因此存在重复的值和额外的值。我想从第二个数据帧中删除第一个数据帧(date_1,date_2 组合)中不存在的值并将它们存储在其他地方。谁能帮助我理解实现同样的目标。

编辑:我在数据框 1 中有另一列名为 value_1。它是聚合值。我想将列值分配给创建的条目,以便第二个数据帧中 date_1、date_2 的总数加到 dataframe1 值

例子:

df1

date_1     date_2    value 
1/1/2019   2/2/2019  1000

预期的 df2

date_1     date_2    value 
1/1/2019   2/2/2019  300
1/1/2019   2/2/2019  10
1/1/2019   2/2/2019  90
1/1/2019   2/2/2019  500
1/1/2019   2/2/2019  50
1/1/2019   2/2/2019  50

谢谢

【问题讨论】:

  • 如果我的解决方案不起作用,您可以为DataFrames 创建minimal, complete, and verifiable example 吗?
  • 好的,你能添加预期的输出吗?
  • @jezrael df2 是预期的输出,我们删除了不存在的值。如您所见,6 个条目的总价值将达到 1000。
  • 所以换句话说需要将1000df1['value']分发到df2['value']列?什么是分配逻辑?为什么300, 10, ...
  • @jezrael 你收到问题了吗?

标签: python pandas numpy


【解决方案1】:

使用DataFrame.mergeindicator 参数,然后通过eq 过滤==boolean indexing,删除行过滤器使用~ 反转掩码:

df = df2.merge(df1, on=['date_1', 'date_2'], how='left', indicator=True)

mask = df['_merge'].eq('both')
df21 = df[mask]

df22 = df[~mask]

【讨论】:

  • 我已经编辑了这个问题,你能根据它编辑你的答案吗
猜你喜欢
  • 2020-11-18
  • 2019-01-02
  • 2023-03-23
  • 2011-08-28
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
相关资源
最近更新 更多