Датафрейм Python Panda - вся строка из строки в дату - PullRequest
0 голосов
/ 28 октября 2018

У меня есть CSV-файл:

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

, а затем загрузите его в DF с помощью:

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

Вся первая строка дат берется в виде строки.Как изменить значения в первой строке ('date') на объект TimeStamp, чтобы можно было использовать такую ​​функцию, как: df.columns[0].month.

Как изменить всю первую строку с помощью, например, опции to_datetime()?

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

вы можете попробовать применить T к вашему DF и затем использовать 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
0 голосов
/ 28 октября 2018

Ряды всегда по столбцам

Таким образом, вы не можете установить строку для серии Pandas datetime и использовать методы Pandas datetime на ней без проблем,Вы можете придумать обходные пути для преобразования строки в datetime серию каждый раз, когда вы используете ее .Но это неэффективно и не использует векторизацию.

Вы можете иметь либо индекс строки, либо индекс столбца как datetime.

datetime index: транспонируйте свойфрейм данных

Самое чистое решение - это перенести ваш фрейм данных и использовать индекс 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...