Извлекать уникальные имена столбцов в нескольких DataFrames и добавлять все в список - PullRequest
0 голосов
/ 28 января 2020

Описание задачи

Я хочу получить имена столбцов в нескольких фреймах данных и добавить уникальные имена в список. Следующий код добавляет имена первых столбцов в список, но я не уверен, как извлечь и добавить различные имена столбцов оставшихся кадров данных в desiredlist. Любые идеи будут великолепны!

alldf = [df, df1, df2, df3, df4]

for index, dataframe in enumerate(alldf):
    desiredlist = []
    a = dataframe.columns.values.tolist()
    desiredlist.append(a)

Пример фреймов данных

  df

       ID    AA  TA  TL
Date                      
2001  a   1.0  44  50 

df1

       ID    AA  TM  TP
Date                      
2001  a   1.0  44  50 

df2

       ID    TP  TZ  TK
Date                      
2001  a   1.0  44  50 

df3

       ID    AA  TA  TG
Date                      
2001  a   1.0  44  50 

df4

       ID    AB  TT  TQ
Date                      
2001  a   1.0  44  50 

Желаемый вывод списка

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

desiredlist = ['AA', 'TA', 'TL', 'TM', 'TP', 'TZ', 'TK','TG', 'AB', 'TT', 'TQ']

Ответы [ 2 ]

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

Вы можете использовать set.update() для заполнения набора и затем получить уникальные имена столбцов.

Например:

df1 = pd.DataFrame({'A':[1], 'B':[2]})
df2 = pd.DataFrame({'A':[1], 'C':[2]})
df3 = pd.DataFrame({'D':[1], 'E':[2]})
df4 = pd.DataFrame({'D':[1], 'B':[2]})

unique = set()
for d in [df1, df2, df3, df4]:
    unique.update(d)
print(unique)

Отпечатки:

{'A', 'D', 'C', 'E', 'B'}
1 голос
/ 28 января 2020

Вы можете перебирать список «а» и добавлять значения, которые еще не были добавлены в «требуемый список». Я думаю, это то, к чему ты стремился.

alldf = [df, df1, df2, df3, df4]
desiredlist = []
for index, dataframe in enumerate(alldf):

    a = dataframe.columns.values.tolist()
    for column_name in a:
        if not column_name in desiredlist:
            desiredlist.append(column_name)
...