熊猫to_dict使用Python本机日期时间类型而不是时间戳



我有一个包含Timesatamp列的pandasDataFramedf

我希望从Timesatamp值为 pythondatetimedf创建一个行迭代器(通过iter..方法或通过to_dict(。

我试过这样做

for col in df.select_dtypes(['datetime']):
df[col] = df[col].dt.to_pydatetime()

但是,使用上述迭代器方法时,似乎列仍然Timesatamp。 除了在迭代时手动转换每个值之外,是否有一种"批处理">方法可以实现这一点?


df = pd.DataFrame({'d': pd.date_range('2018-01-01', freq='12h', periods=2), 'a':[1,2]})
for col in df.select_dtypes(['datetime']):
df[col] = df[col].dt.to_pydatetime()
print(df.to_dict('records'))

输出:

[{'d': Timestamp('2018-01-01 00:00:00'), 'a': 1}, {'d': Timestamp('2018-01-01 12:00:00'), 'a': 2}]

所需的输出:

[{'d': datetime.datetime(2018, 1, 1, 0, 0), 'a': 1}, {'d': datetime.datetime(2018, 1, 1, 12, 0), 'a': 2}]

你可以试试

df[col] = pd.Series(df[col].dt.to_pydatetime(), dtype = object)

而不是

df[col] = df[col].dt.to_pydatetime()

试试看:

df["d"]=df.d.apply(lambda t: t.date())                                                                              
df.d.to_dict()                                                                                                      
{0: datetime.date(2018, 1, 1), 1: datetime.date(2018, 1, 2)}

有点相关,但如果要将数据转储到 JSON 中,请将数据帧转换为 JSON

json_df = df.to_json(orient='records')

然后将数据输出到新的 JSON 文件中

with open('out.json', 'w') as outfile:
json.dump(json.loads(json_df), outfile)

相关内容

  • 没有找到相关文章

最新更新