【问题标题】:Expansion of dataset based on few constraints基于少量约束的数据集扩展
【发布时间】:2020-02-19 10:52:54
【问题描述】:

编辑:

我有一个包含以下字段的数据框,

I_Code Date_1   Date_2  Count real_Count
4   01/09/2019  02/08/2019  112 1
4   01/09/2019  03/08/2019  178 3
1   01/09/2019  04/08/2019  174 6
4   01/09/2019  04/08/2019  174 6
1   01/09/2019  05/08/2019  194 8
4   01/09/2019  05/08/2019  194 8
1   01/09/2019  06/08/2019  195 8
2   01/09/2019  06/08/2019  195 8
4   01/09/2019  07/08/2019  208 10
1   01/09/2019  08/08/2019  183 14
2   01/09/2019  08/08/2019  183 14
4   01/09/2019  08/08/2019  183 14
1   01/09/2019  09/08/2019  213 17
4   01/09/2019  09/08/2019  213 17
1   01/09/2019  10/08/2019  213 14

real_count表示dataframe中date_2的个数,这里的count列指的是我想在展开时达到date_2的频率计数。我想展开dataframe使得date_2出现到计数的总数。 date_2 有多个条目,它们是 date_1 和 I_code 的约束。

1   01/09/2019  08/08/2019  183
2   01/09/2019  08/08/2019  183
4   01/09/2019  08/08/2019  183

这里 date_2 相同,但 I_code 不同。

例子:

假设 date_2 = 08/08/2019 共有 3 个条目。然后在扩展时,我们需要在数据框中获得 183 个条目,每个条目具有相等的条目,即 183/3。

谁能帮忙。

【问题讨论】:

  • 为什么要使用R Python 代码标签?
  • @MauritsEvers 实现数据集生成 R 或 python 都是可用的最佳语言。
  • 我想说的是,多代码标签问题在 SO 中通常不是很流行。他们可能会遇到"gimme teh codez" 请求,缺乏您方面的任何真正尝试,并且经常被认为(和关闭)过于广泛。最好 (1) 专注于一种编码语言,(2) 提供某种形式的代码尝试来展示您自己的努力。

标签: python r pandas numpy


【解决方案1】:

您可以在.nunique() 的结果上使用.max(axis=1) 来获取Date_2 的每个值的唯一值的最大数量(跨所有其他列)。

然后为生成的系列命名,并将其与原始数据框连接起来。

df.join(df.groupby('Date_2').nunique().max(axis=1).rename('Date_2_Count'), on='Date_2')

I_Code      Date_1      Date_2  Count  real_Count  Date_2_Count
     4  01/09/2019  02/08/2019    112           1             1
     4  01/09/2019  03/08/2019    178           3             1
     1  01/09/2019  04/08/2019    174           6             2
     4  01/09/2019  04/08/2019    174           6             2
     1  01/09/2019  05/08/2019    194           8             2
     4  01/09/2019  05/08/2019    194           8             2
     1  01/09/2019  06/08/2019    195           8             2
     2  01/09/2019  06/08/2019    195           8             2
     4  01/09/2019  07/08/2019    208          10             1
     1  01/09/2019  08/08/2019    183          14             3
     2  01/09/2019  08/08/2019    183          14             3
     4  01/09/2019  08/08/2019    183          14             3
     1  01/09/2019  09/08/2019    213          17             2
     4  01/09/2019  09/08/2019    213          17             2
     1  01/09/2019  10/08/2019    213          14             1

【讨论】:

  • 这对扩展数据集有何帮助?
  • @user3759616 如果这不是您想要的结果,很可能是我没有正确理解您的问题。也许您应该尝试澄清您的问题,并可能包含您正在寻找的输出示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
  • 2018-07-14
  • 1970-01-01
  • 2013-02-28
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
相关资源
最近更新 更多