如何解决计算日期上方的列数
我有一个包含多列的 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 举报,一经查实,本站将立刻删除。