Включить строки из нескольких фреймов данных в новый фрейм данных - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть около 20 фреймов данных, где я нацеливаюсь на значения определенной строки. Например, я показываю упрощенную версию одного из моих фреймов данных

    Type   N1   N2
    43     121  455
    23     554  52
    85     74   615

Я хочу получить строку каждого "Типа" 23 из моих наборов данных

Я попробовал код, приведенный ниже, но на выходе получился мусор.

dataf = pd.DataFrame()
for x in [df1,df2,...df20]:
    data = x.loc[x['Type']==23]
dataf.append(data)

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

Ожидаемый новый фрейм данных:

    N1   N2
    554  52
    153  87  and so on..

Ответы [ 2 ]

2 голосов
/ 19 апреля 2019

Я думаю, что:

df_list = [df1,df2, ...,df20]
filtered_df_list = [ df[df['Type'] == 23] for df in df_list ] #Filter each mini-df on "Type" = 23

final_df = pd.concat(filtered_df_list) # Concat the small mini-dfs (hence faster concatenating)

Может быть более эффективным и менее трудоемким в зависимости от размера кадров данных, но это может быть доказано.Если вы поделитесь с нами некоторыми данными, чтобы я мог это сделать, или если вы хотите сделать это самостоятельно, мне будет интересен ответ.

1 голос
/ 19 апреля 2019

Используйте pd.concat, чтобы объединить кадры данных перед фильтрацией:

dfc = pd.concat([df1, df2, ..., df20])
dataf = dfc[dfc.Type == 23][['N1', 'N2']]

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

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