优化转换为整数 - 熊猫

时间:2014-05-03 05:48:13

标签: python-2.7 pandas

我有一个80,000行的DataFrame。一列'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 != ',']))

但它非常慢。在列表理解或应用函数中执行此操作会更快吗?这种操作的最佳实践是什么?

由于

1 个答案:

答案 0 :(得分:1)

因此,如果我理解正确,您可以获得如下数据:

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

如果是这种情况,可能最简单的方法是使用thousands中的read_csv选项(由于缺失值,类型将为float而不是int ):

df = pd.read_csv(StringIO(data),header=True,thousands=',')

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

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

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个整数。