Добавить новый столбец с разными строковыми значениями к разным фреймам данных одновременно? - PullRequest
0 голосов
/ 07 августа 2020

Все, что я хочу сделать, это добавить новый столбец «county» к каждому из нижеприведенных фреймов данных, чтобы в фрейме данных alameda_ был новый столбец ['county »], где во всех строках написано« alameda », в кадре данных coco_ новый столбец ['county'], где во всех строках написано "coco", et c. В конечном счете, с каждой строкой, помеченной соответствующим округом, цель состоит в том, чтобы объединить все фреймы данных вместе.

Текущий код выглядит следующим образом, но очевидно, что для l oop неверно. Как выполнить итерацию как по списку фреймов данных, так и по списку строк?

dfs = [alameda_,coco_,marin_,napa_,solano_,sonoma_,sf_,sm_,sc_]
county_labels = ['alameda','coco','marin','napa','solano','sonoma','sf','sm','sc']

for i in dfs:
    i['county'] = county_labels

Воспроизводимый пример:

alameda = pd.DataFrame({'col1': ['foo','bar','baz'], 'col2': ['foo','bar','baz'], 'col3': ['foo','bar','baz']})
coco = pd.DataFrame({'col1': ['foo','bar','baz'], 'col2': ['foo','bar','baz'], 'col3': ['foo','bar','baz']})
marin = pd.DataFrame({'col1': ['foo','bar','baz'], 'col2': ['foo','bar','baz'], 'col3': ['foo','bar','baz']})

new_df = pd.concat(dfs)

Заранее спасибо !!

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Использовать перечисление:

import pandas as pd

alameda = pd.DataFrame({'col1': ['foo','bar','baz'], 'col2': ['foo','bar','baz'], 'col3': ['foo','bar','baz']})
coco = pd.DataFrame({'col1': ['foo','bar','baz'], 'col2': ['foo','bar','baz'], 'col3': ['foo','bar','baz']})
marin = pd.DataFrame({'col1': ['foo','bar','baz'], 'col2': ['foo','bar','baz'], 'col3': ['foo','bar','baz']})

dfs = [alameda,coco,marin]
county_labels = ['alameda','coco','marin']

for i, df in enumerate(dfs):
    df['county'] = county_labels[i]

print(alameda.head())

Вывод для (print(alameda.head()):

  col1 col2 col3   county
0  foo  foo  foo  alameda
1  bar  bar  bar  alameda
2  baz  baz  baz  alameda
1 голос
/ 07 августа 2020

Попробуйте это, вы можете использовать python функцию zip , чтобы заархивировать итераторы и перебирать их одновременно

dfs = [alameda_,coco_,marin_,napa_,solano_,sonoma_,sf_,sm_,sc_]
country_labels = ['alameda','coco','marin','napa','solano','sonoma','sf','sm','sc']

for i,j in zip(dfs,country_labels):
    i['county'] = j
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...