通过计算有效地将多个DataFrame列的dtype一次全部转换为一个dtype

时间:2018-10-13 19:41:57

标签: python python-3.x pandas performance multiple-columns

功能如下:

def func1(df):
    df = df.loc[:,['code',
                  'currentPrice',
                  'hedgingValue',
                  'exercisePrice',
                  'outstanding(%)',
                  'expiryDate'
                  ]].dropna()

    df['code'] = df['code'].str[:5]
    df['currentPrice'] = df['currentPrice'].astype(float)
    df['hedgingValue'] = df['hedgingValue'].astype(float)
    df['exercisePrice'] = (df['exercisePrice'].str.replace(',','')).astype(int)
    df['outstanding(%)'] = (df['outstanding(%)'].str[:-1]).astype(float)
    df['expiryDate'] = df['expiryDate'].astype(int)

    return df

将df ['currentPrice']和df ['hedgingValue']从字符串转换为float的两行效果不佳,以至于如果有100列而不是两列呢?因此,有一种方法可以仅使用一个行代码将多列(假设有100列)转换为float。我的问题是,能解决这个问题的神奇的一行代码是什么?预先谢谢你们。

请注意,众所周知,df.apply()在处理大型DataFrame时缓慢且效率低下,因此,绝对不能解决这种情况。

1 个答案:

答案 0 :(得分:2)

IIUC,您想在一行中执行多次转换。这可以通过

cols = ['col1', 'col2', 'col3', ...]
df[cols] = df[cols].astype(float)