pandas - 根据列和行值合并数据框
问题描述
我有一个数据框,我想与另一个具有相同列值的数据框合并。还具有指定的行值。
数据框 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
是重复的。
预期产出
有什么更好的方法来做到这一点?谢谢
解决方案
过滤数据框中的列值,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
推荐阅读
- react-native - 如何导航到未显示在 BottomTabNavigator 或 DrawerNavigator 中的屏幕
- exception-handling - ARM中的异常是什么?
- java - 用java3d创建空心圆柱体
- php - php文件中android volley POST请求的安全性
- excel - 如何在excel中随时间进行条件格式化?
- python-2.7 - 如何使用 Python 2 检索 Outlook 任务
- python - 绝对导入错误
- microsoft-cognitive - Google Cloud Vision 是否包含(可能)后 OCR 文本更正?
- javascript - 更新不同页面上的数据
- docker - Docker容器退出:分段错误,errno 139,退出状态139