【发布时间】:2019-09-17 12:41:02
【问题描述】:
我有一个列名和数据类型的字典,如下所示:
{'ds': dtype('<M8[ns]'), 'sensor_id': dtype('int64'), 'm1': dtype('int64'), 'm2': dtype('float64')}
现在,我有一个合并的 pandas 数据框,其中还包含这些列,因为正确合并并由于 NaN 卷而更改了数据类型。
所以,我尝试恢复为原始数据类型,如下所示:
merged = merged.apply(lambda x: x.astype(original[x.name]) if x.name in data_types else x)
这里original 是原始数据框。
但是,当我这样做时,我得到了错误:
KeyError: ('Only the Series name can be used for the key in Series dtype mappings.', 'occurred at index ds')
【问题讨论】:
-
x.name不会只是一个字符串吗? -
是的,但这不是我们想要的吗?
-
你试过
original = {'ds':'<M8[ns]',...}吗? -
其实我只需要这样做:
original[x.name].dtype。出于某种原因,我不喜欢在这里从不同的数据框传递一列。