通过在熊猫中添加来自不同数据框的列来创建列

时间:2019-07-17 05:57:34

标签: python pandas append concat

我有一个数据框列表,我想在其中循环所有数据框,并通过用提供的列表过滤列来追加列,从而创建数据框。下面是代码

#df_ls contains list of dataframes 
df_ls = [A, B, C, D]
for j in df_ls:
    match_ls = ['card', 'brave', 'wellness']
    for i in text:
        if i in j.columns:
            print(i)
        df1 = j[i]
        df2 = df1
        df_full = df2.append(df1)

需要具有单个列的结果新数据框包含所有match_ls字符串值。

A 
card  banner
rex   23 
fex   45
jex   66

B
brave laminate
max   ste
vax   pre
jox   lex

expected output
rex
fex
jex
max
vax
jox

1 个答案:

答案 0 :(得分:3)

使用列表理解和Index.intersection的过滤器列名称,最后使用concat进行连接:

df_ls = [A, B, C, D]
match_ls = ['card', 'brave', 'wellness']
dfs = [j[j.columns.intersection(match_ls)].stack().reset_index(drop=True) for j in df_ls]
df_full = pd.concat(dfs, ignore_index=True)

循环版本:

dfs = []
for j in df_ls:
    df = j[j.columns.intersection(match_ls)].stack().reset_index(drop=True) 
    print (df)
    dfs.append(df)

df_full = pd.concat(dfs, ignore_index=True)
print (df_full)