python - Pandas 使用列和 ID 中的值加入索引
问题描述
我有两个数据框:
targets = {'index':[3, 4, 5],
'sequence_id':[140366A0464161, 140366A0464178, 140366A0464189],
'target': [0, 1, 0]}
data = {'sequence_id':[140366A0464161, 140366A0464161, 140366A0464161, 140366A0464178, 140366A0464178, 140366A0464178, 140366A0464178, 140366A0464178],
'feature_1' : ['true', 'true', 'false', 'false', 'true', 'true', 'false', 'false']}
我想创建另一个数据框,其中index
andsequence_id
列targets
对应于sequence_id
in的索引data
。
我的意思是,例如,的第三个索引140366A0464161
是false
和的目标0
。索引可能并不总是每个的最后一个实例sequence_id
。数据中的特征也比features_1
.
我的预期输出是:
index sequence_id feature_1 target
0 3 140366A0464161 false 0
1 4 140366A0464178 false 0
2 5 140366A0464189 true 0
就我所尝试的而言:我尝试了基于 the 的连接,sequence_id
但意识到它远不止于此,因为索引不是真的 in data
,所以这让我很难过!
提前致谢。
解决方案
据我了解,您希望为每个 sequence_id 取最后一个值,因为您的“数据”数据框中有几个相同的 sequence_id(如果您提供有关所需连接逻辑的其他信息,可能是另一种解决方案)。
所以第一步 - 将其转换为适当的格式:
df1 = pd.DataFrame.from_dict(targets).set_index('index')
df2 = pd.DataFrame.from_dict(data).set_index('sequence_id')
conv_df = df2.groupby('sequence_id').nth([-1])
Out[80]:
feature_1
sequence_id
140366A0464161 false
140366A0464178 false
所以然后只是megre它:
df1.merge(conv_df, left_on = 'sequence_id', right_index = True)
Out[83]:
sequence_id target feature_1
index
3 140366A0464161 0 false
4 140366A0464178 1 false
推荐阅读
- angularjs - 谷歌标签管理器不听 dataLayer.push 的问题
- excel - 如何忽略 WB.Open 弹出用户窗体?
- dart - 使用 dio 包上传图片失败
- excel - 将 VBA 变量设置为字符串函数的结果
- angular - Angular 2 (7.3.6):使用代码将组件添加/加载到命名的路由器插座中,而无需更改浏览器 URL
- php - SQLite3::query():在准备总帐时无法准备语句
- python - Kivy RecycleView - 元素从底部出现
- git - 关于 git prune
- javascript - 登录 Javascript
- c++ - 如何将opengl与nvidia驱动程序一起使用?