首页 > 解决方案 > 根据列和行值合并数据框

问题描述

我有一个数据框,我想与另一个具有相同列值的数据框合并。还具有指定的行值。

数据框 1

d = {'id': ['111', '222', '333'], 'queries': ['High', 'Mid', 'Low'], 'time_stay': ['High', 'Mid', 'Low']}
dd = pd.DataFrame(data=d)

数据框 2

l = {'Features': ['queries', 'queries', 'queries', 'time_stay', 'time_stay', 'time_stay'], 'groups':['High', 'Mid', 'Low', 'High', 'Mid', 'Low'], 'parameters':[1.2, 1.1, 1.0, 1000, 2000, 3000]}
feature_data = pd.DataFrame(data=l)
feature_data

我旋转数据框 2 以将第一行作为列。

feature_data = feature_data.T
feature_data.columns = feature_data.loc['Features', :]

然后我合并它 dd.merge(feature_data, on=list(feature_data.columns), how='left') 正如预期的那样,pandas 不允许我合并它,因为列queries是重复的。

预期产出

在此处输入图像描述

有什么更好的方法来做到这一点?谢谢

标签: pandas

解决方案


过滤数据框中的列值,feature_data然后将其合并到dd数据框中

cols_name = 'queries'
queries = feature_data[feature_data['Features']==cols_name]
dd.merge(queries[['groups','parameters']],
         left_on=['queries'],
         right_on=['groups'],
         how="left")
        .drop(columns='groups')
print(dd)

id  queries time_stay   parameters
111 High    High        1.2
222 Mid     Mid         1.1
333 Low     Low         1.0

推荐阅读