Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/pandas/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 优化到整数-整数的转换_Python 2.7_Pandas - Fatal编程技术网

Python 2.7 优化到整数-整数的转换

Python 2.7 优化到整数-整数的转换,python-2.7,pandas,Python 2.7,Pandas,我有一个80000行的数据帧。一列“prod_prom”包含空值或数字的字符串表示,即包括“,”。我需要把它们转换成整数。到目前为止,我一直在这样做: for row in DF.index: if pd.notnull(DF.loc[row, 'prod_prom']): DF.loc[row, 'prod_prom'] = int(''.join([char for char in DF.loc[row, 'prod_prom'] if char != ',']))

我有一个80000行的数据帧。一列“prod_prom”包含空值或数字的字符串表示,即包括“,”。我需要把它们转换成整数。到目前为止,我一直在这样做:

for row in DF.index:
    if pd.notnull(DF.loc[row, 'prod_prom']):
        DF.loc[row, 'prod_prom'] = int(''.join([char for char in DF.loc[row, 'prod_prom'] if char != ',']))
但是速度非常慢。在列表理解中这样做会更快吗,还是使用apply函数?这种操作的最佳实践是什么


谢谢

如果我理解正确,您有如下数据:

data = """
A,B
100,"5,000"
200,"10,000"
300,"100,000"
400,
500,"2,000"
"""
print df

     A        B
0  100    5,000
1  200   10,000
2  300  100,000
3  400      NaN
4  500    2,000

df['B'] = df['B'].str.replace(r',','').astype(float)
print df

    A       B
0  100    5000
1  200   10000
2  300  100000
3  400     NaN
4  500    200
如果是这种情况,最简单的方法可能是使用
read\u csv
中的
数千
选项(由于缺少值,类型将是
float
而不是
int
):

如果不可能,您可以执行以下操作:

data = """
A,B
100,"5,000"
200,"10,000"
300,"100,000"
400,
500,"2,000"
"""
print df

     A        B
0  100    5,000
1  200   10,000
2  300  100,000
3  400      NaN
4  500    2,000

df['B'] = df['B'].str.replace(r',','').astype(float)
print df

    A       B
0  100    5000
1  200   10000
2  300  100000
3  400     NaN
4  500    200

我将类型更改为float,因为pandas中没有
NaN
整数。

导入数千个整数效果很好,我担心(可能没有什么好的理由)它可能会把我的其他列弄得一团糟(因为我没有花时间确认其他字符串列中是否存在','值。在这种情况下,第二种解决方案对我来说似乎更好。我可能可以将该技术与某种列表理解结合起来,以获得ints和NA值。谢谢您指定使用“千”选项导入哪些列?应该处理NaN通过
pandas
自动执行。您根本不必担心它们。即使您在列表中将单个元素更改为
int
,因为您在某些元素中有NaN值,pandas也会在我使用1000个时自动将列的数据类型更改为
float
,但它无法转换'4453.8'0.这是典型的吗?是的,因为逗号后面有空格。如果没有空格,应该可以转换。