python - 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()
选项更改整个第一行?
解决方案
系列总是按列排列
所以你不能为 Pandas系列设置一行并无缝地使用 Pandas 方法。每次使用时,您都可以制定变通方法将行转换为系列。但这是低效的,并且没有利用矢量化。datetime
datetime
datetime
您可以将行索引或列索引设置为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_index
then 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')