2016-05-30 5 views
0

У меня есть Dataframe df с 3 столбцами. A, B и CИспользование itertools.combinations с колонками

A B C 
2 4 4 
5 2 5 
6 9 5 

Моя цель состоит в том, чтобы использовать itertools.combinations, чтобы найти все бесповторные пары столбцов и поместить первую пару колонок в одном DataFrame, а второй в другой. Таким образом, все пары этого дадут A: B, A: C, B: C.

Так что первый dataframe df1 будет иметь первый из этих пар колонок:

df=A A B 
    2 4 4 
    5 5 2 
    6 5 9 

и второй df2:

B C C 
    4 4 4 
    3 5 5 
    9 5 5 

Я пытаюсь сделать что-то с itertools как:

for cola, colb in itertools.combinations(df, 2): 
     df1[cola]=cola 
     df2[colb]=colb 

Я знаю, что это не имеет смысла, но я могу изменить каждый столбец в список и itertool список списков, а затем добавьте их в список A и B, а затем верните этот список в Dataframe, но затем я пропущу заголовки. И я попытался добавить заголовки в список, но когда я попытаюсь переделать его обратно в DataFrame, индексирование кажется выключенным, и я не могу его исправить. Так что я просто пытаюсь посмотреть, есть ли способ только для itertool целых столбцов с заголовками.

ответ

0

Использовать zip функции группы столбцов, которые будут использоваться в каждом DataFrame отдельно, а затем использовать pandas.concat построить новые DataFrames:

from itertools import combinations 

df1_cols, df2_cols = zip(*combinations(df.columns,2)) 

df1 = pd.concat([df[col] for col in df1_cols],axis=1) 
df2 = pd.concat([df[col] for col in df2_cols],axis=1) 
Смежные вопросы