Изменить данные в pandas - PullRequest
0 голосов
/ 09 марта 2020

У меня есть CSV-файл, который при чтении в pandas создает кадр данных в формате ниже

  0             1                           2                    3                4                  5                6
 Day          Time                      2020-05-01 00:00  2020-05-02 00:00  2020-05-03 00:00  2020-05-04 00:00  2020-05-05 00:00
Night       23:00:00                            33            45                  33               23               19
Night       1900-01-01 00:00                    33            45                  33               23               19
Night       1900-01-01 01:00                    33            45                  33               23               19
Night       1900-01-01 02:00                    33            45                  33               23               19
Night       1900-01-01 03:00                    33            41                  23               23               19
Night       1900-01-01 04:00                    33            41                  23               23               19

Есть ли способ преобразовать первую строку в новый столбец в pandas, который будет вывод данных как

 0            1                       2   3   4   5   6
Day          Time      Date          
Night       23:00   2020-05-01        33  45  33  23  19
Night       00:00   2020-05-02        33  45  33  23  19
Night       01:00   2020-05-03        33  45  33  23  19
Night       02:00   2020-05-04        33  45  33  23  19
Night       03:00   2020-05-05        33  41  23  23  19
Night       04:00   2020-05-06        33  41  23  23  19

1 Ответ

1 голос
/ 09 марта 2020

Первый шаг - получить имена столбцов по второй строке:

df = pd.read_csv(file, header=[1])

Затем разделить Time столбцы с replace:

df['Time'] = df['Time'].str.split().str[-1].str.replace(':00:00', ':00')

Добавить новый столбец в 3-ю позицию с помощью DataFrame.insert

df.insert(2, 'Date', pd.date_range(df.columns[2], periods=len(df)))

Установить новые имена столбцов:

df.columns = df.columns[:3].tolist() + np.arange(3, len(df.columns)).tolist()
print (df)
     Day   Time       Date   3   4   5   6   7
0  Night  23:00 2020-05-01  33  45  33  23  19
1  Night  00:00 2020-05-02  33  45  33  23  19
2  Night  01:00 2020-05-03  33  45  33  23  19
3  Night  02:00 2020-05-04  33  45  33  23  19
4  Night  03:00 2020-05-05  33  41  23  23  19
5  Night  04:00 2020-05-06  33  41  23  23  19
...