我有一个包含两列的 DataFrame:一列是日期,另一列包含 True 或 False 值。
假设此代码获取数据框:
d_range=pd.date_range(start='01-01-2018', end='01-06-2018', freq='0.2D', )
d_range=d_range.date
my_list=[]
for i in range(0,d_range.size):
if 0<i<18:
my_list.append(False)
else:
my_list.append(True)
df=pd.DataFrame({'date':d_range, 'met criteria':my_list})
df.set_index(['date'])
这将为我们提供这个 DataFrame:
print(df)
date criteria
0 2018-01-01 True
1 2018-01-01 False
2 2018-01-01 False
3 2018-01-01 False
4 2018-01-01 False
5 2018-01-02 False
6 2018-01-02 False
7 2018-01-02 False
8 2018-01-02 False
9 2018-01-02 False
10 2018-01-03 False
11 2018-01-03 False
12 2018-01-03 False
13 2018-01-03 False
14 2018-01-03 False
15 2018-01-04 False
16 2018-01-04 False
17 2018-01-04 False
18 2018-01-04 True
19 2018-01-04 True
20 2018-01-05 True
21 2018-01-05 True
22 2018-01-05 True
23 2018-01-05 True
24 2018-01-05 True
25 2018-01-06 True
我需要一个按“日期”分组的结果,如果至少有一个 True 值,那么结果将为 True,否则为 False。结果应如下所示:
date criteria
2018-01-01 True
2018-01-02 False
2018-01-03 False
2018-01-04 True
2018-01-05 True
2018-01-06 True
你能建议一些可以做到这一点的代码吗?
这是一种方法:
In [1]:
import pandas as pd
d_range=pd.date_range(start='01-01-2018', end='01-06-2018', freq='0.2D', )
d_range=d_range.date
my_list=[]
for i in range(0,d_range.size):
if 0<i<18:
my_list.append(False)
else:
my_list.append(True)
df=pd.DataFrame({'date':d_range, 'met criteria':my_list})
def True_or_Not(x):
return x>0
df.groupby('date').sum().apply(True_or_Not)
df
Out [1]:
met criteria
date
2018-01-01 True
2018-01-02 False
2018-01-03 False
2018-01-04 True
2018-01-05 True
2018-01-06 True
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句