Python Dataframe计算列不返回数值

Python Dataframe计算列不返回数值,python,pandas,Python,Pandas,我有一个数据帧(df),头部看起来像: Quarter Body Total requests Requests on-hold Total requests received (excluding on-hold) 1 2019_Q3 A 93 5 2 2019_Q3 B 228 2 3 2019_Q3 C

我有一个数据帧(df),头部看起来像:

  Quarter   Body    Total requests  Requests on-hold    Total requests received (excluding on-hold)
1 2019_Q3      A                93                 5    
2 2019_Q3      B               228                 2    
3 2019_Q3      C               180                 7    
4 2019_Q3      D                31                 3    
5 2019_Q3      E               555                 0    
每个字段的类型为:

df.dtypes  
Quarter                                                                                         object
Body                                                                                            object
Total requests                                                                                  object
Requests Processed                                                                              object
Requests on-hold                                                                                object
Total requests received (excluding on-hold)                                                    float64
我正在尝试计算
总请求数-保留请求数
并将结果插入
列中收到的总请求数(不包括保留请求)
,因此我希望的输出如下所示:

  Quarter   Body    Total requests  Requests on-hold    Total requests received (excluding on-hold)
1 2019_Q3      A                93                 5                                            88
2 2019_Q3      B               228                 2                                           226
3 2019_Q3      C               180                 7                                           173
4 2019_Q3      D                31                 3                                            28
5 2019_Q3      E               555                 0                                           555
我正在尝试使用以下方法创建接收到的总请求(不包括保留)colum数据:

df['Total requests received (excluding on-hold)'] = df['Total requests'] - df['Requests on-hold']
但是我得到的是每个条目的
NaN
,而不是一个值

  Quarter   Body    Total requests  Requests on-hold    Total requests received (excluding on-hold)
1 2019_Q3      A                93                 5                                           NaN
2 2019_Q3      B               228                 2                                           NaN
3 2019_Q3      C               180                 7                                           NaN
4 2019_Q3      D                31                 3                                           NaN
5 2019_Q3      E               555                 0                                           NaN
我注意到Total requests和requests on hold的类型是object,所以我尝试使用

df["Total requests"] = pd.to_numeric(df["Total requests"])
df["Requests on-hold"] = pd.to_numeric(df["Requests on-hold"])
没有成功。我如何解决这个问题

注意:当我添加以下代码以转换为数值时(在计算之前):

我收到错误消息:

    df["Total requests"] = pd.to_numeric(df["Total requests"])

  File "C:\Anaconda_Python 3.7\2019.03\lib\site-packages\pandas\core\tools\numeric.py", line 122, in to_numeric
    raise TypeError('arg must be a list, tuple, 1-d array, or Series')

TypeError: arg must be a list, tuple, 1-d array, or Series

它似乎有一些拖拉空白,所以请尝试通过
剥离
来删除它:

df["Total requests"] = pd.to_numeric(df["Total requests"].str.strip())
df["Requests on-hold"] = pd.to_numeric(df["Requests on-hold"].str.strip())
如果可能的话,先将一些带有尾随值的非数值
剥离
,然后添加参数
errors='concurve'
,以便将它们转换为
NaN
s:

df["Total requests"] = pd.to_numeric(df["Total requests"].str.strip(), errors='coerce')
df["Requests on-hold"] = pd.to_numeric(df["Requests on-hold"].str.strip(), errors='coerce')
如果不是尾随空格:

df["Total requests"] = pd.to_numeric(df["Total requests"], errors='coerce')
df["Requests on-hold"] = pd.to_numeric(df["Requests on-hold"], errors='coerce')

当使用
pd.to_numeric
时,您会得到什么?Hi yatu-我已经将收到的错误添加到问题主体中
df[“总请求”]
不是
pd.Series
??在尝试输入数字之前,请检查df[“Total requests”]的dtypedtype是否为对象
df["Total requests"] = pd.to_numeric(df["Total requests"], errors='coerce')
df["Requests on-hold"] = pd.to_numeric(df["Requests on-hold"], errors='coerce')