Как прочитать Pandas информацию столбца Dataframe через итерацию строковой переменной - PullRequest
1 голос
/ 06 апреля 2020

У меня есть Pandas DataFrame со столбцами 'Var_1_Access', 'Var_2_Access', ... 'Var_N_Access', и между этими столбцами есть другая информация / столбцы, которые я хотел бы найти. Например:

data = pd.read_csv('File')
df = pd.Dataframe(data)
print(df.columns)


Index = (['Var_1', 'Var_1_Access', 'Var_1_comp1', 'Var_1_comp2', 'Var_2', 'Var_2_Access', 'Var_2_comp1', 'Var_2_comp2'], dtype='object')

Я хотел бы написать для l oop, который проходит через диапазон N и вытягивает 'Var_1_Access' до 'Var_N_Access'.

I ' я пробовал:

Access_Matrix = []
for i in range(1, N + 1):
    Access_Matrix.append(df.f"Var_%i_Access" % i)

Access_Matrix = []
for i in range(1, N + 1):
    Access_Matrix.append(df.Var_{i}_Access)

Access_Matrix = []
for i in range(1, N + 1):
    Access_Matrix.append(df.Var_[i]_Access)

Все это приводит к ошибкам. Да, можно было бы просто записать их, так как N мало, но N станет большим, и я действительно не хочу вводить каждое имя переменной по отдельности, а скорее индексировать его. Конечная цель состоит в том, чтобы прочитать информацию Pandas кадра данных для N переменных и иметь Access_Matrix формы [len(Var_N_Access), N]. Кроме того, может потребоваться добавить дополнительную информацию между этими указанными c именами переменных позже, поэтому я хотел бы проиндексировать ее по именам строковых переменных по сравнению с индексами столбцов и искать шаблон.

Я могу предоставить больше информации, если это необходимо, но я думаю, что это охватывает необходимую информацию.

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Использовать pandas .DataFrame.filter

Фильтрует столбцы с помощью регулярных выражений и создает отфильтрованную версию

access_df = df.filter(regex=f'Var_\d_Access')

Для указания c значение N или получить до диапазона,

access_df = df.filter(regex=f'Var_[1-{N}]_Access')

Этот метод намного эффективнее, чем использование сырой l oop.

1 голос
/ 06 апреля 2020

Вы не сможете сделать это с помощью '.' нотации, но вы должны быть в состоянии сделать это в квадратных скобках со строкой 'f'.

for i in range(1, N + 1):
    Access_Matrix.append(df[f"Var_{i}_Access"])

Или, возможно, лучшим подходом было бы создать список имен столбцов и извлечь их в новый кадр данных в одном go из df, например:

cols = [f"Var_{i}_Access" for i in range(1, N+1)]
all_cols = df[cols]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...