Python 如果datetime中的数据点少于x个,则将数组设置为NAN

Python 如果datetime中的数据点少于x个,则将数组设置为NAN,python,pandas,date,datetime,Python,Pandas,Date,Datetime,我有一个数据帧输出,如下所示 dateparse = lambda x: dt.datetime.strptime(x, "%d:%m:%Y %H:%M:%S") df = pd.read_csv('somefile', skiprows = 6, na_values = ['-999.000000'], parse_dates={'times':[0,1]}, date_parser=dateparse) df = df.set_index('times') print(df)

我有一个数据帧输出,如下所示

dateparse = lambda x: dt.datetime.strptime(x, "%d:%m:%Y %H:%M:%S")
df = pd.read_csv('somefile', skiprows = 6, na_values = ['-999.000000'], parse_dates={'times':[0,1]}, date_parser=dateparse)
df = df.set_index('times')
print(df)

                    times           A          B          C          D  \
0     2003-01-01 00:34:38    0.082516   0.102096   0.143908   0.227867   
1     2003-01-01 00:38:57    0.085833   0.106582   0.149704   0.238216   
2     2003-01-01 00:44:07    0.084019   0.103900   0.146425   0.232553   
3     2003-01-01 00:50:18    0.085005   0.105516   0.148011   0.235786   
4     2003-01-01 00:57:57    0.089478   0.110041   0.155636   0.247485   
5     2003-01-01 01:07:31    0.090858   0.112727   0.157333   0.250582   
6     2003-01-01 01:18:11    0.095183   0.118650   0.166181   0.266422   
7     2003-01-01 01:24:54    0.095459   0.118206   0.165703   0.265689   
8     2003-01-01 01:33:24    0.096138   0.118215   0.165815   0.264526   
9     2003-01-01 01:48:11    0.093621   0.116163   0.162775   0.260970   
10    2003-01-01 02:03:11    0.097354   0.120059   0.167964   0.270480   
11    2003-01-01 02:18:12    0.095817   0.118176   0.166490   0.266451   
12    2003-01-01 02:24:50    0.094345   0.113859   0.161243   0.256563   
13    2003-01-01 02:33:12    0.093151   0.112366   0.158082   0.252427   
14    2003-01-01 02:48:12    0.088426   0.108625   0.152767   0.246545   
15    2003-01-01 03:03:11    0.090825   0.111603   0.156169   0.252650   
16    2003-01-01 03:18:12    0.088676   0.107009   0.150868   0.241441   
17    2003-01-01 03:24:51    0.091120   0.107680   0.153139   0.245209   
18    2003-01-01 03:33:12    0.094014   0.113787   0.159610   0.256748   
19    2003-01-01 03:48:13    0.090774   0.110138   0.155652   0.252272   
20    2003-01-01 04:03:12    0.091755   0.111134   0.158139   0.256281   
21    2003-01-01 04:18:12    0.105797   0.127926   0.182425   0.300056   
22    2003-01-01 04:33:12    0.108270   0.130971   0.184997   0.309122   
23    2003-01-01 04:48:13    0.112102   0.136731   0.192955   0.323832   
24    2003-01-01 05:03:12    0.113862   0.139115   0.195716   0.330440   
25    2003-01-01 05:18:13    0.109960   0.134348   0.187129   0.317269   
26    2003-01-01 05:24:50    0.111670   0.133918   0.187268   0.315839   
27    2003-01-01 05:33:12    0.115415   0.139826   0.195095   0.330612   
28    2003-01-01 05:48:11    0.108153   0.130107   0.181749   0.311513   
29    2003-01-01 06:03:11    0.124846   0.150228   0.209006   0.360110   
...                   ...         ...        ...        ...        ...   
62094 2012-12-30 02:32:45    0.076481   0.082212   0.098530   0.127626   
62095 2012-12-30 04:02:46    0.074581   0.075652   0.093802   0.121700   
62096 2012-12-30 04:17:45    0.069553   0.069642   0.087689   0.111479   
62097 2012-12-30 04:24:45    0.078354   0.078970   0.098119   0.129527   
62098 2012-12-30 04:32:46    0.082699   0.081013   0.102228   0.134887   
62099 2012-12-30 04:47:45    0.085212   0.089094   0.108791   0.141562   
62100 2012-12-30 07:56:36    0.085549   0.090656   0.110367   0.158078   
62101 2012-12-30 08:01:01    0.088070   0.094420   0.114416   0.164917   
62102 2012-12-31 01:35:43    0.199741   0.223171   0.286124   0.447926   
62103 2012-12-31 01:48:13    0.217590   0.244189   0.308924   0.477287   
62104 2012-12-31 02:18:12    0.209208   0.229590   0.283930   0.422209   
62105 2012-12-31 02:25:06    0.225229   0.245545   0.301449   0.445500   
62106 2012-12-31 02:33:12    0.236910   0.258252   0.313862   0.460853   
62107 2012-12-31 03:03:13    0.228002   0.246693   0.302313   0.445168   
62108 2012-12-31 03:18:13    0.235366   0.257824   0.317586   0.475176   
62109 2012-12-31 03:25:07    0.246707   0.269936   0.332616   0.498684   
62110 2012-12-31 03:33:13    0.246553   0.269369   0.330051   0.490452   
62111 2012-12-31 04:25:10    0.249062   0.268720   0.320451   0.454450   
62112 2012-12-31 04:33:13    0.251103   0.269946   0.321919   0.456619   
62113 2012-12-31 04:48:13    0.257122   0.278713   0.335067   0.488326   
62114 2012-12-31 05:03:14    0.274840   0.298629   0.361423   0.536313   
62115 2012-12-31 05:18:14    0.272331   0.297988   0.361081   0.540261   
62116 2012-12-31 05:33:13    0.259284   0.280575   0.336578   0.490123   
62117 2012-12-31 05:48:13    0.281216   0.305000   0.364803   0.533686   
62118 2012-12-31 07:03:13    0.316535   0.346806   0.418629   0.643321   
62119 2012-12-31 07:18:13    0.287614   0.315958   0.383844   0.597279   
62120 2012-12-31 07:46:05    0.323202   0.350592   0.430860   0.657584   
62121 2012-12-31 07:52:16    0.288645   0.319988   0.389610   0.622262   
62122 2012-12-31 07:57:24    0.294492   0.328670   0.398978   0.638286   
62123 2012-12-31 08:01:45    0.287507   0.320027   0.391866   0.636343  

我希望实现的是,如果任何一个指数“时间”在该年的月日内少于30点(即2003-01-01或任何其他日期少于30个数据点),则设置A、B、C、D=NAN。有没有简单的方法可以做到这一点?

groupby
创建一个掩码,然后用
loc
分配:

m = df.set_index('times')\
       .groupby(pd.TimeGrouper(freq='D')).A.transform(len).lt(30)   

df.loc[m.values, ['A', 'B', 'C', 'D']] = np.nan

您每天有多行,是否希望当天的所有行都设置为NaN?正确,如果我运行
m=df.set\u index('times')\.groupby(pd.TimeGrouper(freq='D')).A.transform(len)。lt(30)
它给我的布尔输出为True/False。但当我在最后一行添加时,它给出了一个错误索引错误次数。你知道为什么吗?真糟糕。谢谢您。