I have two dataframes that look like this:
df_1 = pd.DataFrame({
'A' : [1.0, 2.0, 3.0, 4.0],
'B' : [100, 200, 300, 400],
'C' : [2, 3, 4, 5]
})
df_2 = pd.DataFrame({
'B' : [1.0, 2.0, 3.0, 4.0],
'C' : [100, 200, 300, 400],
'D' : [2, 3, 4, 5]
})
Now if I utilize pandas .isin function I can do something nifty like this
>>> print df_2.columns.isin(df_1.columns)
array([ True, True, False], dtype=bool)
Columns B
and C
from df_2
exist in df_1
while D
doesn't
My question is: does anyone know of a way to return the columns' labels for columns that exist in df_2 but not in df_1
something like this
array([u'D'], dtype=string)
Thank you in advance!
To select all columns except one column in Pandas DataFrame, we can use df. loc[:, df. columns != <column name>].
Method 2: Using setdiff() This is an R built-in function to find the set difference of two dataframes. It will return rows in df1 that are not present in df2.
You can extract a column of pandas DataFrame based on another value by using the DataFrame. query() method. The query() is used to query the columns of a DataFrame with a boolean expression. The blow example returns a Courses column where the Fee column value matches with 25000.
If you have a DataFrame and would like to access or select a specific few rows/columns from that DataFrame, you can use square brackets or other advanced methods such as loc and iloc .
Pandas index object have set-like properties, so you can directly do:
df_2.columns.difference(df_1.columns)
Index([u'D'], dtype='object')
You can also use operators like &|^
to compute intersection, union and symmetric difference:
df_1.columns & df_2.columns
Index([u'B', u'C'], dtype='object')
df_1.columns | df_2.columns
Index([u'A', u'B', u'C', u'D'], dtype='object')
df_1.columns ^ df_2.columns
Index([u'A', u'D'], dtype='object')
There use to be the -
operator for difference, now deprecated:
df_2.columns - df_1.columns
FutureWarning: using '-' to provide set differences with Indexes is deprecated, use .difference()
Index([u'D'], dtype='object')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With