我有一个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()
选项更改整个第一行?
答案 0 :(得分:1)
因此,您不能为熊猫datetime
系列设置 row 并在其上无缝使用熊猫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
列如果您需要将列用作datetime
,则可以使用set_index
,然后使用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')
答案 1 :(得分:0)
您可以尝试在自己的DF上应用T
,然后使用pd.to_datetime
df = pd.read_csv('test.csv').T
df.reset_index(inplace=True)
df = df.rename(columns={'index':'Date',0:'Value'}).tail(df.shape[0]-1)
df.Date = pd.to_datetime(df.Date)
df
Date Value
1 31/07/2018 12
2 31/08/2018 23
3 30/09/2018 45
OR
df.T
1 2 3
Date 31/07/2018 31/08/2018 30/09/2018
Value 12 23 45