【问题标题】:Convert object to string in pandas在熊猫中将对象转换为字符串
【发布时间】:2017-02-22 16:04:14
【问题描述】:

我在 Pandas 数据框中有变量,其值如下

print (df.xx)

1          5679558
2        (714) 254
3                0
4         00000000
5        000000000
6      00000000000
7        000000001
8        000000002
9        000000003
10       000000004
11       000000005

print (df.dtypes)
xx         object

我如下所示,以便将其转换为 num

try:
    print df.xx.apply(str).astype(int)
except ValueError:
    pass

我确实试过这样

tin.tin = tin.tin.to_string().astype(int)

但这给了我MemoryError,因为我有 3M 行。

可以帮助我去除特殊字符并将其转换为 int64 吗?

【问题讨论】:

    标签: python pandas object out-of-memory tostring


    【解决方案1】:

    您可以测试字符串是否为isdigit,然后使用布尔掩码仅以矢量化方式转换这些行,并使用to_numeric 和参数errors='coerce'

    In [88]:
    df.loc[df['xxx'].str.isdigit(), 'xxx'] = pd.to_numeric(df['xxx'], errors='coerce')
    df
    
    Out[88]:
                xxx
    0   5.67956e+06
    1     (714) 254
    2             0
    3             0
    4             0
    5             0
    6             1
    7             2
    8             3
    9             4
    10            5
    

    【讨论】:

    • 如果我的回答解决了你的问题,那么你可以接受,我的回答左上角会有一个空勾
    【解决方案2】:

    您可以将巨大的数据帧拆分为块,例如,此方法可以在您决定块大小的地方执行此操作:

    def splitDataFrameIntoSmaller(df, chunkSize = 10000): 
        listOfDf = list()
        numberChunks = len(df) // chunkSize + 1
        for i in range(numberChunks):
            listOfDf.append(df[i*chunkSize:(i+1)*chunkSize])
        return listOfDf
    

    拥有块后,您可以将函数分别应用于每个块。

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 2021-09-19
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      • 2015-02-06
      • 2021-12-05
      • 2017-08-02
      • 2021-07-28
      相关资源
      最近更新 更多