Панды read_csv с индексом в каждом втором столбце - PullRequest
0 голосов
/ 14 мая 2018

У меня есть CSV-файл с несколькими значениями для нескольких акций, который выглядит следующим образом:

date                stock_A  date               stock_B  date      stock_C
30.10.2017 09:00    3223     30.10.2017 09:00   53234    ...       .....
30.10.2017 09:02    2544     30.10.2017 09:01   24337    ...       .....
30.10.2017 09:04    925      30.10.2017 09:02   4529     ...       .....    
30.10.2017 09:05    3210     30.10.2017 09:03   8534     ...       .....    

Как видите, каждый второй столбец является индексом даты и времени. Однако, это не в том же порядке / частоте. Есть ли способ импортировать эти данные с пандами, так что я получаю только один индекс, и данные отображаются соответственно?

Я уже пробовал этот код:

pd.read_csv(file, sep=";", header=0, index_col=['date'], parse_dates=True, dtype=object)

Но он импортирует только первую строку в качестве индекса, а остальные даты - в виде столбцов со значениями. Тем не менее, я хотел бы иметь свой DataFrame следующим образом:

date                stock_A  stock_B  stock_C
30.10.2017 09:00    3223     53234    122
30.10.2017 09:01    0        24337    1215  
30.10.2017 09:02    2544     4529     0 
30.10.2017 09:03    0        8534     1354
...

1 Ответ

0 голосов
/ 14 мая 2018

Используйте понимание списка с concat и set_index для DatetimeIndex для каждой пары:

df = pd.read_csv(file, sep=";")

a = df.columns[::2]
b = df.columns[1::2]

df=pd.concat([df[[j]].set_index(pd.to_datetime(df[i])) for i, j in zip(a,b)],axis=1).fillna(0)
print (df)
                     stock_A  stock_B
2017-10-30 09:00:00   3223.0  53234.0
2017-10-30 09:01:00      0.0  24337.0
2017-10-30 09:02:00   2544.0   4529.0
2017-10-30 09:03:00      0.0   8534.0
2017-10-30 09:04:00    925.0      0.0
2017-10-30 09:05:00   3210.0      0.0

Последнее для столбца из индекса:

df = df.rename_axis('date').reset_index()
print (df)
                 date  stock_A  stock_B
0 2017-10-30 09:00:00   3223.0  53234.0
1 2017-10-30 09:01:00      0.0  24337.0
2 2017-10-30 09:02:00   2544.0   4529.0
3 2017-10-30 09:03:00      0.0   8534.0
4 2017-10-30 09:04:00    925.0      0.0
5 2017-10-30 09:05:00   3210.0      0.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...