Python Pandas-生成一列的总和,该列的值为';1';在it或NaN中

Python Pandas-生成一列的总和,该列的值为';1';在it或NaN中,python,excel,pandas,numpy,csv,Python,Excel,Pandas,Numpy,Csv,我有一个像这样的数据框 Opened Closed Resolved 07:01 - 09:00 09:01 - 11:00 11:01 - 13:00 2020-04-14 14:45:58 2020-04-14 15:04:22 0 days 00:18:24.000000000 1 2020-04-14 13:43

我有一个像这样的数据框

Opened              Closed              Resolved                   07:01 - 09:00    09:01 - 11:00   11:01 - 13:00   
2020-04-14 14:45:58 2020-04-14 15:04:22 0 days 00:18:24.000000000                                   1   
2020-04-14 13:43:28 2020-04-14 14:12:22 0 days 00:28:54.000000000                   1   
2020-04-14 13:41:18 2020-04-14 14:12:28 0 days 00:31:10.000000000                   1   
2020-04-14 10:57:53 2020-04-14 11:24:58 0 days 00:27:05.000000000       1           
2020-04-14 09:18:14 2020-04-14 09:44:04 0 days 00:25:50.000000000       1           
2020-04-14 09:16:28 2020-04-14 09:31:12 0 days 00:14:44.000000000       1           
2020-04-13 22:56:09 2020-04-14 00:39:30 0 days 01:43:21.000000000                   
2020-04-13 20:10:31 2020-04-13 20:26:25 0 days 00:15:54.000000000                   
2020-04-13 08:29:38 2020-04-13 18:29:25 0 days 09:59:47.000000000       1               
2020-04-09 14:04:14 2020-04-09 15:31:01 0 days 01:26:47.000000000                   1   
2020-04-09 10:06:24 2020-04-09 10:33:39 0 days 00:27:15.000000000       1           
2020-04-08 21:38:13 2020-04-09 07:01:30 0 days 09:23:17.000000000                   
2020-04-08 15:51:41 2020-04-08 16:08:02 0 days 00:16:21.000000000                                   1
2020-04-08 15:50:09 2020-04-08 16:07:57 0 days 00:17:48.000000000                                   1
2020-04-08 15:48:38 2020-04-08 16:07:52 0 days 00:19:14.000000000                                   1
我想在每列的底部生成所有“1”值的总和,这样看起来就像这样

Opened              Closed              Resolved                   07:01 - 09:00    09:01 - 11:00   11:01 - 13:00   
2020-04-14 14:45:58 2020-04-14 15:04:22 0 days 00:18:24.000000000                                   1   
2020-04-14 13:43:28 2020-04-14 14:12:22 0 days 00:28:54.000000000                   1   
2020-04-14 13:41:18 2020-04-14 14:12:28 0 days 00:31:10.000000000                   1   
2020-04-14 10:57:53 2020-04-14 11:24:58 0 days 00:27:05.000000000       1           
2020-04-14 09:18:14 2020-04-14 09:44:04 0 days 00:25:50.000000000       1           
2020-04-14 09:16:28 2020-04-14 09:31:12 0 days 00:14:44.000000000       1           
2020-04-13 22:56:09 2020-04-14 00:39:30 0 days 01:43:21.000000000                   
2020-04-13 20:10:31 2020-04-13 20:26:25 0 days 00:15:54.000000000                   
2020-04-13 08:29:38 2020-04-13 18:29:25 0 days 09:59:47.000000000       1               
2020-04-09 14:04:14 2020-04-09 15:31:01 0 days 01:26:47.000000000                   1   
2020-04-09 10:06:24 2020-04-09 10:33:39 0 days 00:27:15.000000000       1           
2020-04-08 21:38:13 2020-04-09 07:01:30 0 days 09:23:17.000000000                   
2020-04-08 15:51:41 2020-04-08 16:08:02 0 days 00:16:21.000000000                                   1
2020-04-08 15:50:09 2020-04-08 16:07:57 0 days 00:17:48.000000000                                   1
2020-04-08 15:48:38 2020-04-08 16:07:52 0 days 00:19:14.000000000                                   1

Total                                                                   5           3               4                 
12


所以每一列都有自己的总和,然后所有的列都有一个总数

我试过了

data.groupby('Total')[“07:01-09:00”].sum()[1]

但这会输出一个长字符串“1”
11111111


如何获得总计?

根据您提供的示例,您的三(3)列(“07:01-09:00,09:01-11:00,11:01-13:00”)可能是dtype:str,这就是您获得一个长字符串1的原因。也就是说,您应该按如下方式将列强制转换为浮动:

data['07:01 - 09:00'] = data['07:01 - 09:00'].astype(float)
data['09:01 - 11:00'] = data['09:01 - 11:00'].astype(float)
data['11:01 - 13:00'] = data['11:01 - 13:00'].astype(float)
之后,您可以尝试以下操作:

data = data.append(data[['07:01 - 09:00', '09:01 - 11:00', '11:01 - 13:00']].sum(), 
                   ignore_index=True)

我得到
ValueError:无法将字符串转换为浮点:'
我假设这是因为我有空值,需要跳过或删除。我该怎么做呢?对所有三列都这样做:data['07:01-09:00']=data['07:01-09:00'].apply(lambda x:x.replace(“”,float(nan))我得到这个错误
文件“”,第1行data['07:01-09:00']=data['07:01-09:00'])。apply(lambda x:x.replace(“”,float(nan))^SyntaxError:在添加额外的
后,解析时出现意外EOF
我得到的
名称“nan”未定义
是,抱歉。它应该如下数据['07:01-09:00']=data['07:01-09:00']。应用(lambda x:x.replace('',float('nan'))