Python 根据联接将列从一个数据帧添加到另一个数据帧
假设我有2个数据帧。我想基于列查找将dataframe 1的一列添加到dataframe 2。如果连接不可能,我希望在额外的列中有一个特定的常量(这样我就可以过滤该常量) 图形化:Python 根据联接将列从一个数据帧添加到另一个数据帧,python,pandas,join,dataframe,Python,Pandas,Join,Dataframe,假设我有2个数据帧。我想基于列查找将dataframe 1的一列添加到dataframe 2。如果连接不可能,我希望在额外的列中有一个特定的常量(这样我就可以过滤该常量) 图形化: import pandas as pd import numpy as np data = np.array([['','Col1','Col2'], ['Row1','2','TWO'], ['Row2','1','ONE']]
import pandas as pd
import numpy as np
data = np.array([['','Col1','Col2'],
['Row1','2','TWO'],
['Row2','1','ONE']]
)
data2 = np.array([['','Col3','Col4'],
['Row1','1','T1'],
['Row2','2','T2'],
['Row3','3','T3']]
)
df = pd.DataFrame(data=data[1:,1:],
index=data[1:,0],
columns=data[0,1:])
df2 = pd.DataFrame(data=data2[1:,1:],
index=data2[1:,0],
columns=data2[0,1:])
result_df = df2 + join Col2 based on df2.Col3 = df.Col1. Add certain string constant if join fails.
print(df)
print(df2)
print(result_df)
代码:
import pandas as pd
import numpy as np
data = np.array([['','Col1','Col2'],
['Row1','2','TWO'],
['Row2','1','ONE']]
)
data2 = np.array([['','Col3','Col4'],
['Row1','1','T1'],
['Row2','2','T2'],
['Row3','3','T3']]
)
df = pd.DataFrame(data=data[1:,1:],
index=data[1:,0],
columns=data[0,1:])
df2 = pd.DataFrame(data=data2[1:,1:],
index=data2[1:,0],
columns=data2[0,1:])
result_df = df2 + join Col2 based on df2.Col3 = df.Col1. Add certain string constant if join fails.
print(df)
print(df2)
print(result_df)
使用或:
df2['Col2'] = df2['Col3'].map(df.set_index('Col1')['Col2'])
print (df2)
Col3 Col4 Col2
Row1 1 T1 ONE
Row2 2 T2 TWO
Row3 3 T3 NaN