在pandas数据帧中计算不包含NaT和NaN的日期

时间:2017-03-21 09:39:33

标签: python pandas dataframe

我有一个pandas数据帧Date,其中包含一个列,指示主题ID和每个主题的几个日期。

     SubID           date1             date2  ....  daten
0    ID1             NaT               NaN   
1    ID2             2015-04-28        NaN   
2    ID3             NaT               NaN 

日期(date1,date2,.... daten)包含NaT,NaN和yyyy-mm-dd形式的日期。

我想为每个SubID计算多少" date"列包含实际日期。

在这个小例子中我应该

     SubID           number of dates
0    ID1             0
1    ID2             1
2    ID3             0

1 个答案:

答案 0 :(得分:1)

我认为您可以使用countloc选择列:

df['number of dates'] = df.loc[:,'date1':].count(axis=1)

样品:

print (df)
  SubID      date1      date2
0   ID1 2015-04-28 2015-04-28
1   ID2 2015-04-28        NaT
2   ID3        NaT        NaT

print (df.loc[:,'date1':])
       date1      date2
0 2015-04-28 2015-04-28
1 2015-04-28        NaT
2        NaT        NaT

df['number of dates'] = df.loc[:,'date1':].count(axis=1)
print (df)
  SubID      date1      date2  number of dates
0   ID1 2015-04-28 2015-04-28                2
1   ID2 2015-04-28        NaT                1
2   ID3        NaT        NaT                0

set_indexreset_index的另一种解决方案:

df = df.set_index('SubID')
df['number of dates'] = df.count(axis=1)
df = df.reset_index()
print (df)
  SubID      date1      date2  number of dates
0   ID1 2015-04-28 2015-04-28                2
1   ID2 2015-04-28        NaT                1
2   ID3        NaT        NaT                0
df = pd.read_pickle('df')
df['number of dates'] = df.loc[:,'date1':].count(axis=1)
print (df)
                 SubID val_1_kalender_val1_a1 val_2_kalender_val1_a1_1  \
0    h2h_ht_ehv_p001_2                    NaT                      NaN   
1    h2h_ht_ehv_p002_3             2015-04-28                      NaN   
2    h2h_ht_ehv_p003_1                    NaT                      NaN   
3    h2h_ht_ehv_p004_4                    NaT                      NaN   
4    h2h_ht_ehv_p005_4                    NaT                      NaN   
5    h2h_ht_ehv_p006_1                    NaT                      NaN   
6    h2h_ht_ehv_p007_1                    NaT                      NaN   
7    h2h_ht_ehv_p008_3             2015-07-08      2015-08-06 00:00:00   
8    h2h_ht_ehv_p009_3             2015-06-03                      NaN   
9    h2h_ht_ehv_p010_3                    NaT                      NaN   
10   h2h_ht_ehv_p011_3                    NaT                      NaN   
11                 NaN                    NaT                      NaN   
12   h2h_ht_ehv_p013_1                    NaT                      NaN   
13   h2h_ht_ehv_p014_3                    NaT                      NaN   
14   h2h_ht_ehv_p015_1                    NaT                      NaN   
15   h2h_ht_ehv_p016_1                    NaT                      NaN   
16   h2h_ht_ehv_p017_3                    NaT                      NaN   
17   h2h_ht_ehv_p018_1             2015-06-26      2015-08-10 00:00:00   
18   h2h_ht_ehv_p019_1             2015-06-18      2015-07-16 00:00:00   
19   h2h_ht_ehv_p020_3                    NaT                      NaN   
20   h2h_ht_ehv_p021_3             2015-08-09                      NaN   
21   h2h_ht_ehv_p022_3             2015-07-05                      NaN   
22   h2h_ht_ehv_p023_3                    NaT                      NaN   
23   h2h_ht_ehv_p024_3                    NaT                      NaN   
24   h2h_ht_ehv_p025_3                    NaT                      NaN   
25   h2h_ht_ehv_p026_3             2015-09-12                      NaN   
26   h2h_ht_ehv_p027_3                    NaT                      NaN   
27   h2h_ht_ehv_p028_3                    NaT                      NaN   
28   h2h_ht_ehv_p029_3                    NaT                      NaN   
29   h2h_ht_ehv_p030_3                    NaT                      NaN   
..                 ...                    ...                      ...   
99   h2h_ht_ehv_p100_3                    NaT                      NaN   
100  h2h_ht_ehv_p101_3                    NaT                      NaN   
101  h2h_ht_ehv_p102_3                    NaT                      NaN   
102  h2h_ht_ehv_p103_1             2016-06-14                      NaN   
103  h2h_ht_ehv_p104_3                    NaT                      NaN   
104                NaN             2016-02-12                      NaN   
105  h2h_ht_ehv_p106_3                    NaT                      NaN   
106  h2h_ht_ehv_p107_3                    NaT                      NaN   
107  h2h_ht_ehv_p108_3                    NaT                      NaN   
108  h2h_ht_ehv_p109_3                    NaT                      NaN   
109  h2h_ht_ehv_p110_1                    NaT                      NaN   
110  h2h_ht_ehv_p111_1                    NaT                      NaN   
111  h2h_ht_ehv_p112_3                    NaT                      NaN   
112  h2h_ht_ehv_p113_3                    NaT                      NaN   
113  h2h_ht_ehv_p114_3             2016-06-06                      NaN   
114  h2h_ht_ehv_p115_1                    NaT                      NaN   
115  h2h_ht_ehv_p116_3             2016-03-18                      NaN   
116  h2h_ht_ehv_p117_3                    NaT                      NaN   
117  h2h_ht_ehv_p118_3                    NaT                      NaN   
118                NaN                    NaT                      NaN   
119  h2h_ht_ehv_p120_3                    NaT                      NaN   
120  h2h_ht_ehv_p121_3                    NaT                      NaN   
121  h2h_ht_ehv_p122_3                    NaT                      NaN   
122  h2h_ht_ehv_p123_3             2016-06-21                      NaN   
123  h2h_ht_ehv_p124_3                    NaT                      NaN   
124  h2h_ht_ehv_p125_3             2016-03-29                      NaN   
125  h2h_ht_ehv_p126_3                    NaT                      NaN   
126  h2h_ht_ehv_p127_1                    NaT                      NaN   
127  h2h_ht_ehv_p128_3                    NaT                      NaN   
128  h2h_ht_ehv_p129_3                    NaT                      NaN   

    val_3_kalender_val1_a1_2 val_4_kalender_val1_a1_3  \
0                        NaN                      NaN   
1                        NaN                      NaN   
2                        NaN                      NaN   
3                        NaN                      NaN   
4                        NaN                      NaN   
5                        NaN                      NaN   
6                        NaN                      NaN   
7                        NaN                      NaN   
8                        NaN                      NaN   
9                        NaN                      NaN   
10                       NaN                      NaN   
11                       NaN                      NaN   
12                       NaN                      NaN   
13                       NaN                      NaN   
14                       NaN                      NaN   
15                       NaN                      NaN   
16                       NaN                      NaN   
17                       NaN                      NaN   
18       2015-07-17 00:00:00      2015-07-27 00:00:00   
19                       NaN                      NaN   
20                       NaN                      NaN   
21                       NaN                      NaN   
22                       NaN                      NaN   
23                       NaN                      NaN   
24                       NaN                      NaN   
25                       NaN                      NaN   
26                       NaN                      NaN   
27                       NaN                      NaN   
28                       NaN                      NaN   
29                       NaN                      NaN   
..                       ...                      ...   
99                       NaN                      NaN   
100                      NaN                      NaN   
101                      NaN                      NaN   
102                      NaN                      NaN   
103                      NaN                      NaN   
104                      NaN                      NaN   
105                      NaN                      NaN   
106                      NaN                      NaN   
107                      NaN                      NaN   
108                      NaN                      NaN   
109                      NaN                      NaN   
110                      NaN                      NaN   
111                      NaN                      NaN   
112                      NaN                      NaN   
113                      NaN                      NaN   
114                      NaN                      NaN   
115                      NaN                      NaN   
116                      NaN                      NaN   
117                      NaN                      NaN   
118                      NaN                      NaN   
119                      NaN                      NaN   
120                      NaN                      NaN   
121                      NaN                      NaN   
122                      NaN                      NaN   
123                      NaN                      NaN   
124                      NaN                      NaN   
125                      NaN                      NaN   
126                      NaN                      NaN   
127                      NaN                      NaN   
128                      NaN                      NaN   

    val_5_kalender_val1_a1_4 val_6_kalender_val1_a1_5  \
0                        NaN                      NaN   
1                        NaN                      NaN   
2                        NaN                      NaN   
3                        NaN                      NaN   
4                        NaN                      NaN   
5                        NaN                      NaN   
6                        NaN                      NaN   
7                        NaN                      NaN   
8                        NaN                      NaN   
9                        NaN                      NaN   
10                       NaN                      NaN   
11                       NaN                      NaN   
12                       NaN                      NaN   
13                       NaN                      NaN   
14                       NaN                      NaN   
15                       NaN                      NaN   
16                       NaN                      NaN   
17                       NaN                      NaN   
18       2015-09-06 00:00:00      2015-10-03 00:00:00   
19                       NaN                      NaN   
20                       NaN                      NaN   
21                       NaN                      NaN   
22                       NaN                      NaN   
23                       NaN                      NaN   
24                       NaN                      NaN   
25                       NaN                      NaN   
26                       NaN                      NaN   
27                       NaN                      NaN   
28                       NaN                      NaN   
29                       NaN                      NaN   
..                       ...                      ...   
99                       NaN                      NaN   
100                      NaN                      NaN   
101                      NaN                      NaN   
102                      NaN                      NaN   
103                      NaN                      NaN   
104                      NaN                      NaN   
105                      NaN                      NaN   
106                      NaN                      NaN   
107                      NaN                      NaN   
108                      NaN                      NaN   
109                      NaN                      NaN   
110                      NaN                      NaN   
111                      NaN                      NaN   
112                      NaN                      NaN   
113                      NaN                      NaN   
114                      NaN                      NaN   
115                      NaN                      NaN   
116                      NaN                      NaN   
117                      NaN                      NaN   
118                      NaN                      NaN   
119                      NaN                      NaN   
120                      NaN                      NaN   
121                      NaN                      NaN   
122                      NaN                      NaN   
123                      NaN                      NaN   
124                      NaN                      NaN   
125                      NaN                      NaN   
126                      NaN                      NaN   
127                      NaN                      NaN   
128                      NaN                      NaN   

    val_7_kalender_val1_a1_6 val_8_kalender_val1_a1_7  \
0                        NaN                      NaN   
1                        NaN                      NaN   
2                        NaN                      NaN   
3                        NaN                      NaN   
4                        NaN                      NaN   
5                        NaN                      NaN   
6                        NaN                      NaN   
7                        NaN                      NaN   
8                        NaN                      NaN   
9                        NaN                      NaN   
10                       NaN                      NaN   
11                       NaN                      NaN   
12                       NaN                      NaN   
13                       NaN                      NaN   
14                       NaN                      NaN   
15                       NaN                      NaN   
16                       NaN                      NaN   
17                       NaN                      NaN   
18                       NaN                      NaN   
19                       NaN                      NaN   
20                       NaN                      NaN   
21                       NaN                      NaN   
22                       NaN                      NaN   
23                       NaN                      NaN   
24                       NaN                      NaN   
25                       NaN                      NaN   
26                       NaN                      NaN   
27                       NaN                      NaN   
28                       NaN                      NaN   
29                       NaN                      NaN   
..                       ...                      ...   
99                       NaN                      NaN   
100                      NaN                      NaN   
101                      NaN                      NaN   
102                      NaN                      NaN   
103                      NaN                      NaN   
104                      NaN                      NaN   
105                      NaN                      NaN   
106                      NaN                      NaN   
107                      NaN                      NaN   
108                      NaN                      NaN   
109                      NaN                      NaN   
110                      NaN                      NaN   
111                      NaN                      NaN   
112                      NaN                      NaN   
113                      NaN                      NaN   
114                      NaN                      NaN   
115                      NaN                      NaN   
116                      NaN                      NaN   
117                      NaN                      NaN   
118                      NaN                      NaN   
119                      NaN                      NaN   
120                      NaN                      NaN   
121                      NaN                      NaN   
122                      NaN                      NaN   
123                      NaN                      NaN   
124                      NaN                      NaN   
125                      NaN                      NaN   
126                      NaN                      NaN   
127                      NaN                      NaN   
128                      NaN                      NaN   

    val_9_kalender_val1_a1_8  number of dates  
0                        NaN                0  
1                        NaN                1  
2                        NaN                0  
3                        NaN                0  
4                        NaN                0  
5                        NaN                0  
6                        NaN                0  
7                        NaN                2  
8                        NaN                1  
9                        NaN                0  
10                       NaN                0  
11                       NaN                0  
12                       NaN                0  
13                       NaN                0  
14                       NaN                0  
15                       NaN                0  
16                       NaN                0  
17                       NaN                2  
18                       NaN                6  
19                       NaN                0  
20                       NaN                1  
21                       NaN                1  
22                       NaN                0  
23                       NaN                0  
24                       NaN                0  
25                       NaN                1  
26                       NaN                0  
27                       NaN                0  
28                       NaN                0  
29                       NaN                0  
..                       ...              ...  
99                       NaN                0  
100                      NaN                0  
101                      NaN                0  
102                      NaN                1  
103                      NaN                0  
104                      NaN                1  
105                      NaN                0  
106                      NaN                0  
107                      NaN                0  
108                      NaN                0  
109                      NaN                0  
110                      NaN                0  
111                      NaN                0  
112                      NaN                0  
113                      NaN                1  
114                      NaN                0  
115                      NaN                1  
116                      NaN                0  
117                      NaN                0  
118                      NaN                0  
119                      NaN                0  
120                      NaN                0  
121                      NaN                0  
122                      NaN                1  
123                      NaN                0  
124                      NaN                1  
125                      NaN                0  
126                      NaN                0  
127                      NaN                0  
128                      NaN                0  

[129 rows x 11 columns]