Способы присвоения имен нескольким pandas фреймам данных после объединения 2 фреймов данных - PullRequest
2 голосов
/ 10 января 2020

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

Вот строка кода для одного экземпляра

test=pd.concat([rxloc,RX.iloc[:,0]],axis=1)

где rxloc - мой первый фрейм данных, а RX - мой второй фрейм данных

Это прекрасно работает, но мне нужно сделать это на 1377 столбцах (со второго фрейма данных). Я могу создать al oop для выполнения этого процесса, однако у меня возникли проблемы с тем, как просто и эффективно назвать все новые фреймы данных в al oop. Я все еще довольно новичок в python и pandas, поэтому любая помощь очень ценится.

Обновление: на этот первоначальный вопрос дан ответ, однако теперь я хочу повторить этот процесс, добавив другой фрейм данных к созданному эта строка кода.

для i в диапазоне (len (список (RX))): all_dfs.append (pd.concat ([rxlo c, RX.iloc [:, i]], ось = 1))

У меня возникли некоторые проблемы с соответствующим l oop, опять же, я хочу добавить один столбец кадра данных 2 к каждому кадру данных в списке all_dfs. Снова любая помощь очень ценится.

Ответы [ 2 ]

2 голосов
/ 10 января 2020

Вы действительно можете использовать al oop для добавления каждого фрейма данных в список:

all_dfs = []
for i in range(len(list(RX))):
    all_dfs.append(pd.concat([rxloc,RX.iloc[:,i]],axis=1))

И каждое значение в списке all_dfs будет другим фреймом данных. Кроме того, значение индекса для фрейма данных в all_dfs будет совпадать с положением столбца в RX (на случай, если вам понадобится какая-то будущая ссылка). Кроме того, я использую range(len()) вместо простого list(RX) в случае, если есть столбцы с одинаковыми именами.

1 голос
/ 10 января 2020

вы можете использовать словарь понимания

all_data ={df{}.format(x):pd.concat([rxloc,RX.iloc[:,x]],axis=1) for x in range(len(RX.columns))}
...