根据两个数据框之间的公共值获取列的值
get a value of a column based on common values between two data frame
我正在尝试仅针对两个不同数据框之间的公共值获取列 A 的值。
数据框 1:
数据框 2:
最终数据帧:
我尝试了下面的代码:如果 X_2 中没有空值或字符串,以及只有一个值要分配,它就可以工作。但是当我们有来自 x_2.
的两个值时,它就不起作用了
df2['X_2'] = np.nan
x_list = df1['x_1'].tolist()
for index in range(len(df2)):
item = df2['A_1'][index]
if item in x_list:
value = df1.loc[df1['x_1)']== item,'X_2'].item()
df2['X_2'][index] = value
else:
pass
试试这个:
# Optional
df1 = df1.replace(['No available', 'null'], np.nan)
df2 = df2.set_index('A_1').assign(X_2=df1.groupby('X_1')['X_2'].agg(list).explode().dropna().groupby(level=0).agg(list).rename().rename_axis(None)).reset_index()
输出:
>>> df2
A_1 X_2
0 99192401 [80306228, 12345678]
1 99192627 [30306711]
2 99192651 [10306222]
3 99192628 NaN
我正在尝试仅针对两个不同数据框之间的公共值获取列 A 的值。
数据框 1:
数据框 2:
最终数据帧:
我尝试了下面的代码:如果 X_2 中没有空值或字符串,以及只有一个值要分配,它就可以工作。但是当我们有来自 x_2.
的两个值时,它就不起作用了df2['X_2'] = np.nan
x_list = df1['x_1'].tolist()
for index in range(len(df2)):
item = df2['A_1'][index]
if item in x_list:
value = df1.loc[df1['x_1)']== item,'X_2'].item()
df2['X_2'][index] = value
else:
pass
试试这个:
# Optional
df1 = df1.replace(['No available', 'null'], np.nan)
df2 = df2.set_index('A_1').assign(X_2=df1.groupby('X_1')['X_2'].agg(list).explode().dropna().groupby(level=0).agg(list).rename().rename_axis(None)).reset_index()
输出:
>>> df2
A_1 X_2
0 99192401 [80306228, 12345678]
1 99192627 [30306711]
2 99192651 [10306222]
3 99192628 NaN