Python 3.x 同时计算多列中的值

Python 3.x 同时计算多列中的值,python-3.x,pandas,Python 3.x,Pandas,我有一个数据帧,df如下 Index DateTimestamp a b c 0 2017-08-03 00:00:00 ta bc tt 1 2017-08-03 00:00:00 re 3 2017-08-03 00:00:00

我有一个数据帧,df如下

Index        DateTimestamp                a        b        c     
 0        2017-08-03 00:00:00            ta        bc      tt       
 1        2017-08-03 00:00:00            re                        
 3        2017-08-03 00:00:00                      cv      ma 

 4        2017-08-04 00:00:00                                     
 5        2017-09-04 00:00:00                      cv             
 :                 :                      :         :       :      
 :                 :                      :         :       :     
我希望通过不考虑每列中的空值,按1天对每列中的值计数进行分组。因此,输出将是

 Index                        a        b        c 
2017-08-03 00:00:00           2        2        2
2017-08-04 00:00:00           0        1        0
我尝试过这个,但不想要我想要的:

df2=df.groupby([pd.Grouper(key='DeviceDateTimeStamp', freq='1D')]) ['a','b','c'].apply(pd.Series.count)
将或用于删除时间,排除缺少的计数值:

print (df)
   Index        DateTimestamp    a    b    c
0      0  2017-08-03 00:00:00   ta   bc   tt
1      1  2017-08-03 00:00:00   re  NaN  NaN
2      3  2017-08-03 00:00:00  NaN   cv   ma
3      4  2017-08-04 00:00:00  NaN  NaN  NaN
4      5  2017-09-04 00:00:00  NaN   cv  NaN

df2=df.groupby(df['DateTimestamp'].dt.floor('d'))['a','b','c'].count()
#another solution
#df2=df.groupby(df['DateTimestamp'].dt.date)['a','b','c'].count()
print (df2)
               a  b  c
DateTimestamp         
2017-08-03     2  2  2
2017-08-04     0  0  0
2017-09-04     0  1  0
编辑:

或者如果可能的话,
a、b、c列中的数值:

c = ['a','b','c']
df2=df[c].astype(str).ne('').groupby(df['DateTimestamp'].dt.floor('d')).sum().astype(int)
print (df2)
               a  b  c
DateTimestamp         
2017-08-03     2  2  2
2017-08-04     0  0  0
2017-09-04     0  1  0

df2=df.groupby([pd.Grouper(key='DeviceDateTimeStamp',freq='1D'))['a','b','c'].count()
?我尝试了这段代码,但它每天都计算日期的出现次数,而不是列的值。谢谢它不起作用。它仍然为每天的所有列提供相同的值OK,解决方案有效如果缺少的值是
NAN
s,那么缺少的值是什么?Emtry字符串?空格?缺少的值是空单元格spaces@Bode-如何工作
df.ne(“”).groupby(df['DateTimestamp'].dt.floor('d'))['a','b','c'].sum()
?@Bode-如果检查
df.ne(“”)
是否为缺少的单元格返回True?
c = ['a','b','c']
df2=df[c].astype(str).ne('').groupby(df['DateTimestamp'].dt.floor('d')).sum().astype(int)
print (df2)
               a  b  c
DateTimestamp         
2017-08-03     2  2  2
2017-08-04     0  0  0
2017-09-04     0  1  0