将“是”标志应用于每种类型的帐户的所有日期的所有第一个实例

维尔齐诺的礼物

我正在尝试评估每个帐户的日期的第一个实例。例如,我想创建一个新列,该列表示同一帐户的最早日期(即使重复相同的日期)为“是”,而以后的日期均表示为“否”。

test = pd.DataFrame({'date':['2018-08-01','2018-08-01','2018-08-02','2018-08-03','2019-09-01','2019-09-02','2019-09-03','2020-01-02','2020-01-03','2020-01-04','2020-10-04','2020-10-05'],
                     'account':['a','a','a','a','b','b','b','c','c','c','d','e']})
test

在此处输入图片说明

输出应如下所示:

在此处输入图片说明

我看到我正在执行的这些步骤不起作用,因为当返回“否”时,第一行索引应为“是”。

new_test = test.merge(pd.DataFrame(test.groupby('account')['date'].min().reset_index()),left_on='account',right_on='account')
new_test

first_har = []
for item in new_test['date_y'].duplicated():
    if item == False:
        first_har.append('Yes')
    else:
        first_har.append('No')
print(first_har)

pd.concat([new_test,pd.DataFrame(first_har)],axis=1)

在此处输入图片说明

任何帮助,不胜感激!

tegancp

您也可以使用来执行此操作merge(与迭代第一个日期的行相比,该方法的性能可能更好)。

从您生成的第一个日期的相同df开始,并first_date附加列:

>>> first_dates = test.groupby('account')['date'].min().reset_index().assign(first_date='Yes')
>>> first_dates

  account        date first_date
0       a  2018-08-01        Yes
1       b  2019-09-01        Yes
2       c  2020-01-02        Yes
3       d  2020-10-04        Yes
4       e  2020-10-05        Yes

与原始合并:

>>> test.merge(first_dates, how='left')

          date account first_date
0   2018-08-01       a        Yes
1   2018-08-01       a        Yes
2   2018-08-02       a        NaN
3   2018-08-03       a        NaN
4   2019-09-01       b        Yes
5   2019-09-02       b        NaN
6   2019-09-03       b        NaN
7   2020-01-02       c        Yes
8   2020-01-03       c        NaN
9   2020-01-04       c        NaN
10  2020-10-04       d        Yes
11  2020-10-05       e        Yes

请注意,默认情况下,合并是在所有匹配的列上完成的,并how='left'确保结果为中的每一行提供了一行test要通过“是/否”获得所需的输出,只需添加缺失值填充即可:

>>> test.merge(first_dates, how='left').fillna({'first_date': 'No'})

          date account first_date
0   2018-08-01       a        Yes
1   2018-08-01       a        Yes
2   2018-08-02       a         No
3   2018-08-03       a         No
4   2019-09-01       b        Yes
5   2019-09-02       b         No
6   2019-09-03       b         No
7   2020-01-02       c        Yes
8   2020-01-03       c         No
9   2020-01-04       c         No
10  2020-10-04       d        Yes
11  2020-10-05       e        Yes

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ffmpeg不在第一个生成的帧上应用水印(wm应用于所有其他帧)

来自分类Dev

应该只应用于一个类的样式将应用于所有内容

来自分类Dev

将CSS规则应用于除一个标签之外的所有内容

来自分类Dev

将CSS应用于除一个特定页面之外的所有页面

来自分类Dev

将函数应用于类的所有实例

来自分类Dev

使用 jQuery 隐藏动态类的第一个实例以外的所有实例

来自分类Dev

对于每种变量类型,将所有行除以一个参考行

来自分类Dev

将CSS规则应用于具有特定类别但最后一个类别的所有元素

来自分类Dev

将pandas数据框切片到包含值的所有列的第一个实例

来自分类Dev

将表格样式应用于除第一列以外的所有列

来自分类Dev

将awk应用于除第一行以外的所有内容

来自分类Dev

如何获得分组值和重复值的所有“第一个”实例?

来自分类Dev

使用jquery定位类的所有实例的第一个孩子

来自分类Dev

如何在第一个选项卡实例后删除所有字符?

来自分类Dev

如何使自定义 ModelBinder 自动应用于某种类型的所有属性

来自分类Dev

MySQL如何将WHERE子句应用于除一个以外的所有选定列?

来自分类Dev

我只将float应用于容器内的一个元素,但是CSS应用于所有元素?

来自分类Dev

用于在所有td中选择第一个跨度的CSS

来自分类Dev

Flutter:用于验证的for循环仅读取第一个索引,而不是所有索引

来自分类Dev

将所有内容匹配到第一个未转义的(带有\)字符

来自分类Dev

选择第一个类型后的所有课程

来自分类Dev

如何从一个int的第一个实例的行值中剥离所有内容?

来自分类Dev

在另一个字符的第一个实例之前获取所有字符

来自分类Dev

杀死正在运行的进程的所有其他实例(第一个实例除外)

来自分类Dev

在特定模式后将所有内容匹配到第一个'/'

来自分类Dev

将列的所有值替换为第一个值-按ID分组

来自分类Dev

将所有值替换为按组的第一个观察值

来自分类Dev

将所有出现的模式替换为第一个匹配的组

来自分类Dev

将 Class 添加到除第一个表之外的所有表

Related 相关文章

  1. 1

    ffmpeg不在第一个生成的帧上应用水印(wm应用于所有其他帧)

  2. 2

    应该只应用于一个类的样式将应用于所有内容

  3. 3

    将CSS规则应用于除一个标签之外的所有内容

  4. 4

    将CSS应用于除一个特定页面之外的所有页面

  5. 5

    将函数应用于类的所有实例

  6. 6

    使用 jQuery 隐藏动态类的第一个实例以外的所有实例

  7. 7

    对于每种变量类型,将所有行除以一个参考行

  8. 8

    将CSS规则应用于具有特定类别但最后一个类别的所有元素

  9. 9

    将pandas数据框切片到包含值的所有列的第一个实例

  10. 10

    将表格样式应用于除第一列以外的所有列

  11. 11

    将awk应用于除第一行以外的所有内容

  12. 12

    如何获得分组值和重复值的所有“第一个”实例?

  13. 13

    使用jquery定位类的所有实例的第一个孩子

  14. 14

    如何在第一个选项卡实例后删除所有字符?

  15. 15

    如何使自定义 ModelBinder 自动应用于某种类型的所有属性

  16. 16

    MySQL如何将WHERE子句应用于除一个以外的所有选定列?

  17. 17

    我只将float应用于容器内的一个元素,但是CSS应用于所有元素?

  18. 18

    用于在所有td中选择第一个跨度的CSS

  19. 19

    Flutter:用于验证的for循环仅读取第一个索引,而不是所有索引

  20. 20

    将所有内容匹配到第一个未转义的(带有\)字符

  21. 21

    选择第一个类型后的所有课程

  22. 22

    如何从一个int的第一个实例的行值中剥离所有内容?

  23. 23

    在另一个字符的第一个实例之前获取所有字符

  24. 24

    杀死正在运行的进程的所有其他实例(第一个实例除外)

  25. 25

    在特定模式后将所有内容匹配到第一个'/'

  26. 26

    将列的所有值替换为第一个值-按ID分组

  27. 27

    将所有值替换为按组的第一个观察值

  28. 28

    将所有出现的模式替换为第一个匹配的组

  29. 29

    将 Class 添加到除第一个表之外的所有表

热门标签

归档