Python Panda数据框-从字符串到日期的整行

时间:2018-10-28 18:00:40

标签: python string pandas datetime dataframe

我有一个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()选项更改整个第一行?

2 个答案:

答案 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