I have two different Pandas data-frames that have one column in common. I have seen similar questions on Stack overflow but none that seem to end up with the columns from both dataframes so please read below before marking as duplicate.
Example:
dataframe 1
ID col1 col2 ...
1 9 5
2 8 4
3 7 3
4 6 2
dataframe 2
ID col3 col4 ...
3 11 15
4 12 16
7 13 17
What I want to achieve is a dataframe with columns from both dataframes but without the ID's found in dataframe2. ie:
desired result:
ID col1 col2 col3 col4
1 9 5 - -
2 8 4 - -
Thanks!
You can use a left join to get only the id
's in the first data frame and not the second data frame while also keeping all the second data frames columns.
import pandas as pd
df1 = pd.DataFrame(
data={"id": [1, 2, 3, 4], "col1": [9, 8, 7, 6], "col2": [5, 4, 3, 2]},
columns=["id", "col1", "col2"],
)
df2 = pd.DataFrame(
data={"id": [3, 4, 7], "col3": [11, 12, 13], "col4": [15, 16, 17]},
columns=["id", "col3", "col4"],
)
df_1_2 = df1.merge(df2, on="id", how="left", indicator=True)
df_1_not_2 = df_1_2[df_1_2["_merge"] == "left_only"].drop(columns=["_merge"])
which returns
id col1 col2 col3 col4
0 1 9 5 NaN NaN
1 2 8 4 NaN NaN
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.