Автоматизировать имя создания нового информационного кадра из строк в массиве numpy, заданных pandas df - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть следующий фрейм данных

      col1          col2          col3
0     str9          47            55
1     str8          43            51
2     str9          46            52
3     str2          42            56

и следующий строковый массив, сгенерированный из df.col1.unique()

strings = ['str9', 'str8', 'str9', 'str2']

Я хочу создать новые фреймы данных для управления количеством данных, которыми я манипулирую, где каждый новый фрейм данных представляет df[df.col1 == strings[0]], df[df.col1 == strings[1]] и т. Д. Для всех значений в strings

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

df_str9 = df[df.col1 == strings[0]]

Я знаю, что могу циклически проходить по строке, чтобы получить доступ к каждому значению в строках, но как мне создать фрейм данных, чтобы он соответствовал требованиям к именам, указанным в списке?

Что-то вроде:

data_file = pd.DataFrame(data = ([['str9', 47, 55], ['str8',  43, 51], ['str9', 46, 52] , ['str2', 42, 56]] ), columns = (['col1', 'col2', 'col3']))
for string in strings:
    df_string = df[df.col1 == string]

1 Ответ

0 голосов
/ 30 апреля 2018

Вам может понадобиться locals()

data_file = pd.DataFrame(data = ([['str9', 47, 55], ['str8',  43, 51], ['str9', 46, 52] , ['str2', 42, 56]] ), columns = (['col1', 'col2', 'col3']))

variables = locals()
for i in data_file['col1'].unique():
    variables["df_{0}".format(i)] = data_file.loc[data_file.col1 == i,]

print(df_str9)

print(df_str9)
   col1  col2  col3
0  str9    47    55
2  str9    46    52
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...