Как добавить MultiIndex после загрузки данных CSV в кадр данных Pandas? - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь добавить дополнительные строки индекса в существующий кадр данных pandas после загрузки в него данных CSV.

Итак, допустим, я загружаю свои данные следующим образом:

columns = ['Relative_Pressure','Volume_STP']
df = pd.read_csv(StringIO(contents), skiprows=4, delim_whitespace=True,index_col=False,header=None)
df.columns = columns

где contents - это строка в формате CSV.Результирующий DataFrame может выглядеть примерно так:

Imported csv data

Для ясности я хотел бы добавить дополнительные строки индекса в DataFrame, как показано здесь :

MulitIndex dataframe

Однако в ссылке эти несколько строк индекса генерируются сразу при создании DataFrame.Я хотел бы добавить, например, строки для unit или descr к столбцам.

Как я могу это сделать?

1 Ответ

1 голос
/ 27 марта 2019

Вы можете создать MultiIndex для столбцов, специально создав индекс и затем присвоив его столбцам отдельно от чтения в данных.

Я буду использовать пример из ссылки , которую вы указали .Первый метод заключается в создании MultiIndex при создании кадра данных:

df = pd.DataFrame({('A',1,'desc A'):[1,2,3],('B',2,'desc B'):[4,5,6]})
df.columns.names=['NAME','LENGTH','DESCRIPTION']
df

NAME             A      B
LENGTH           1      2
DESCRIPTION desc A desc B
0                1      4
1                2      5
2                3      6

Как уже говорилось, это , а не , что вы ищете.Вместо этого вы можете создать фрейм данных (например, из вашего файла), а затем создать MultiIndex из набора списков и назначить его столбцам:

df = pd.DataFrame({'desc A':[1,2,3], 'desc B':[4,5,6]})

# Output
   desc A  desc B
0       1       4
1       2       5
2       3       6

# Create a multiindex from lists
index = pd.MultiIndex.from_arrays((['A', 'B'],  [1, 2], ['desc A', 'desc B']))

# Assign to the columns
df.columns = index


# Output
       A      B
       1      2
  desc A desc B
0      1      4
1      2      5
2      3      6


# Name the columns
df.columns.names = ['NAME','LENGTH','DESCRIPTION']

# Output
NAME             A      B
LENGTH           1      2
DESCRIPTION desc A desc B
0                1      4
1                2      5
2                3      6

Существуют другие способы созданияMultiIndex, например, from_tuples и from_product.Вы можете прочитать больше о Multi Indexes в документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...