微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算日期上方的列数

如何解决计算日期上方的列数

我有一个包含多列的 Pandas 数据框,我想知道日期 2016-12-31 上方的列数。下面是一个例子:

ID 比尔 日期 1 日期 2 日期 3 日期 4 法案 2
4 6 2000-10-04 2000-11-05 1999-12-05 2001-05-04 8
6 8 2016-05-03 2017-08-09 2018-07-14 2015-09-12 17
12 14 2016-11-16 2017-05-04 2017-07-04 2018-07-04 35

我想得到这个专栏

计数
0
2
3

解决方法

只需创建掩码并在 sum 上调用 axis=1

date = pd.to_datetime('2016-12-31')
(df[['Date 1','Date 2','Date 3','Date 4']]>date).sum(1)

输出:

0    0
1    2
2    3
dtype: int64

如果需要,调用 .to_frame('count') 以创建列为 count 的数据帧

(df[['Date 1','Date 4']]>date).sum(1).to_frame('Count')
   Count
0      0
1      2
2      3
,

你可以这样做:

df['Count'] = (df.loc[:,[x for x in df.columns if 'Date' in x]] > '2016-12-31').sum(axis=1)

输出:

     ID   Bill      Date 1      Date 2      Date 3      Date 4   Bill 2  Count
0     4      6  2000-10-04  2000-11-05  1999-12-05  2001-05-04        8      0
1     6      8  2016-05-03  2017-08-09  2018-07-14  2015-09-12       17      2
2    12     14  2016-11-16  2017-05-04  2017-07-04  2018-07-04       35      3

我们选择名称中带有“日期”的列。当我们有很多这样的列并且不想将它们一一放置时会更好。然后我们将其与查找日期进行比较并求和“真”值。

,

使用 df.filter 过滤 Date* 列 + .sum(axis=1)

(df.filter(like='Date') > '2016-12-31').sum(axis=1).to_frame(name='Count')

结果:

   Count
0      0
1      2
2      3

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?