首页 > 解决方案 > Python Panda 数据框 - 从字符串到日期的整行

问题描述

我有一个 csv 文件:

Date,2018-07-31,2018-08-31,2018-09-30
Value,12,34,56

然后将其加载到 DF 中:

df = pd.read_csv('test.csv')

整个第一行日期被视为一个字符串。如何将第一行(“日期”)中的值更改为 TimeStamp 对象,以便可以使用如下函数:df.columns[0].month.

如何使用例如to_datetime()选项更改整个第一行?

标签: pythonstringpandasdatetimedataframe

解决方案


系列总是按列排列

所以你不能为 Pandas系列设置一行并无缝地使用 Pandas 方法。每次使用时,您都可以制定变通方法将行转换为系列。但这是低效的,并且没有利用矢量化。datetimedatetimedatetime

可以将行索引或列索引设置为datetime.

datetime索引:转置你的数据框

最干净的解决方案是转置您的数据框并使用datetime索引:

from io import StringIO

x = StringIO("""Date,2018-07-31,2018-08-31,2018-09-30
Value,12,23,45""")

df = pd.read_csv(x)
df = df.set_index('Date').T
df.index = pd.to_datetime(df.index)

print(df)

Date        Value
2018-07-31     12
2018-08-31     23
2018-09-30     45

print(df.index.month)

Int64Index([7, 8, 9], dtype='int64')

datetime

如果您需要列 as datetime,您可以使用set_indexthen pd.to_datetime

df = df.set_index('Date').rename_axis('')
df.columns = pd.to_datetime(df.columns)

print(df)

       2018-07-31  2018-08-31  2018-09-30

Value          12          23          45

print(df.columns.month)

Int64Index([7, 8, 9], dtype='int64')

推荐阅读