问题 使用DataFrame.replace时是否可以强制pandas不转换数据类型


这是一个有效的例子:

df = pd.DataFrame({'A': [-39882300000000000000]}, dtype='object')

df.replace({',': '.'})  提出一个 OverflowError 因为在代码中的某个地方 convert flag设置为True。我不确定,但可能是因为大熊猫推断它只包含数字。

我从Excel工作簿中读取数据,我想在使用时阻止此转换 df.replace。有办法吗?


11035
2017-08-21 21:05


起源

IIUC将其转换为 str。 df.astype(str).replace({',': '.'}) - piRSquared


答案:


df.update(df.blocks['object'].astype(str).replace({',': '.'}))

8
2017-08-21 21:13



df.blocks['object'] - 哇!这很酷! - MaxU
你记得我刚才提起的......这是我第一次用它回答问题( - : - piRSquared
@ayhan,有一个记录的方法: pandas.pydata.org/pandas-docs/stable/generated/... - MaxU
@ayhan也没有 get_value 要么 set_value 但杰夫告诉我,这不是公开的api。所以,还是不确定 - piRSquared
其中有一些是为了弃用;他们只是膨胀API - Jeff


这个怎么样:

In [25]: df.loc[:, df.dtypes=='object'] = \
             df.select_dtypes(['object']).astype(str).replace({',': '.'})

这将适用 .replace 只有a的列 string (object)dtype


6
2017-08-21 21:11