Python 为什么熊猫街是南?
我正在尝试从Pandas中的数据帧中的值中删除逗号分隔符,以使我能够将值转换为整数。我一直在使用以下方法: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
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')
一定是瞎了,但我在输入数据帧中看不到任何逗号?