Python 为什么熊猫街是南?

Python 为什么熊猫街是南?,python,pandas,Python,Pandas,我正在尝试从Pandas中的数据帧中的值中删除逗号分隔符,以使我能够将值转换为整数。我一直在使用以下方法: df_orders['qty'] = df_orders['qty'].str.replace(',','') 但是,对于一些值中最初不包含“,”的数字,这似乎会返回NaN值。我已将我的输入数据和当前输出示例包括在下面: 输入: date sku qty 556603 2020-10-25 A 6 590904 2020-10-21 A 5

我正在尝试从Pandas中的数据帧中的值中删除逗号分隔符,以使我能够将值转换为整数。我一直在使用以下方法:

df_orders['qty'] = df_orders['qty'].str.replace(',','')
但是,对于一些值中最初不包含“,”的数字,这似乎会返回NaN值。我已将我的输入数据和当前输出示例包括在下面:

输入:

         date      sku  qty
556603  2020-10-25  A   6
590904  2020-10-21  A   5
595307  2020-10-20  A   31
602678  2020-10-19  A   11
615022  2020-10-18  A   2
641077  2020-10-16  A   1
650203  2020-10-15  A   3
655363  2020-10-14  A   18
667919  2020-10-13  A   5
674990  2020-10-12  A   2
703901  2020-10-09  A   1
715411  2020-10-08  A   1
721557  2020-10-07  A   31
740515  2020-10-06  A   49
752670  2020-10-05  A   4
808426  2020-09-28  A   2
848057  2020-09-23  A   1
865751  2020-09-21  A   2
886630  2020-09-18  A   3
901095  2020-09-16  A   47
938648  2020-09-10  A   2
969909  2020-09-07  A   3
1021548 2020-08-31  A   2
1032254 2020-08-30  A   8
1077443 2020-08-25  A   5
1089670 2020-08-24  A   24
1098843 2020-08-23  A   16
1102025 2020-08-22  A   23
1179347 2020-08-12  A   1
1305700 2020-07-29  A   1
1316343 2020-07-28  A   1
1399930 2020-07-19  A   1
1451864 2020-07-15  A   1
1463195 2020-07-14  A   15
2129080 2020-05-19  A   1
2143468 2020-05-18  A   1
电流输出:

         date      sku  qty
556603  2020-10-25  A   6
590904  2020-10-21  A   5
595307  2020-10-20  A   31
602678  2020-10-19  A   11
615022  2020-10-18  A   2
641077  2020-10-16  A   1
650203  2020-10-15  A   3
655363  2020-10-14  A   NaN
667919  2020-10-13  A   NaN
674990  2020-10-12  A   NaN
703901  2020-10-09  A   NaN
715411  2020-10-08  A   NaN
721557  2020-10-07  A   NaN
740515  2020-10-06  A   NaN
752670  2020-10-05  A   NaN
808426  2020-09-28  A   2
848057  2020-09-23  A   1
865751  2020-09-21  A   2
886630  2020-09-18  A   3
901095  2020-09-16  A   47
938648  2020-09-10  A   NaN
969909  2020-09-07  A   NaN
1021548 2020-08-31  A   NaN
1032254 2020-08-30  A   NaN
1077443 2020-08-25  A   NaN
1089670 2020-08-24  A   NaN
1098843 2020-08-23  A   NaN
1102025 2020-08-22  A   NaN
1179347 2020-08-12  A   NaN
1305700 2020-07-29  A   NaN
1316343 2020-07-28  A   1
1399930 2020-07-19  A   1
1451864 2020-07-15  A   1
1463195 2020-07-14  A   15
2129080 2020-05-19  A   1
2143468 2020-05-18  A   1

我已四处查看,但似乎找不到导致此错误的原因。

我能够重现您的问题:

# toy df
df

  qty
0   1
1  2,
2   3

df['qty'].str.replace(',', '')

0    NaN
1      2
2    NaN
Name: qty, dtype: object
我通过以下操作创建了
df

df = pd.DataFrame({'qty': [1, '2,', 3]})
换句话说,您的列有混合的数据类型-一些值是整数,而另一些是字符串。因此,当您在混合类型上应用
.str
方法时,非str类型将转换为NaN,以指示“嘿,在int上运行str方法没有意义”


您可以通过将整个列转换为字符串,然后再转换回int来解决此问题:

df['qty'].astype(str).str.replace(',', '').astype(int) 
或者如果你想要更强壮的东西,试试看

df['qty'] = pd.to_numeric(
    df['qty'].astype(str).str.extract('(\d+)', expand=False), errors='coerce') 

一定是瞎了,但我在输入数据帧中看不到任何逗号?