Home > Net >  Create list of columns to view in data frame
Create list of columns to view in data frame

Time:01-21

I have two data frames;

df1 has many columns, lets say a thru to z df2 contains rows that hold the names of columns I want to expose from df1

df1:

A B C D
1 10 100 1000
2 20 200 2000

df2:

Expose
B
D

df2 will be dynamic and manages in a database table hence the desire to dynamically read the columns to expose instead of hard coding.

I've got code that iterates df2 to create the set of columns I'm interested in and returns the string: "['B','D']" set to the variable called props

What I want to the do is create a version of df1 but just with the columns B & D.

Trying

df1 = pd.DataFrame(df1, columns: props) 

I get the error that I'm passing a string not a collection which makes perfect sense.... I'm struggling to see how to create the collection to pass through as the columns.

Any help appreciated.

CodePudding user response:

You do it all in one line:

df1 = df1[df2['Expose']]

CodePudding user response:

Damn, no soon as I post this I find the answer. Instead of creating the string I create a list and use props.append() when creating the list from df2.

CodePudding user response:

Try:

to get columns names from df2:

list_of_col =  df2['Expose'].tolist()

above will return a list of columns in df2

now use above list in below code line:

new_df = df1.loc[:, df1.columns.intersection(list_of_col)] 
print(new_df .columns)

this will give you required dataframe.

  • Related