python - 如何根据在 dataframe2 中创建的列在 dataframe1 中创建列,该列是通过在 dataframe1 上使用 groupby() 派生的
问题描述
首先,我为标题措辞不佳表示歉意。
我有 2 个熊猫数据框。X_train 和 crunched_X_train。
crunched_X_train 是通过在名为 id 的列上使用 groupby() 从 X_train 派生的。
然后我在 crunched_X_train 上做了一些事情,这样我就在这个数据框中创建了一个名为 label 的新列。对于 crunched_X_train 中的每个 id,该行中都有一个标签。label 是一个介于 0 和 3 之间的数字。我想将此标签列添加到原始 X_train 中,这样对于 X_train 中的每个 id,该行上都会有一个标签,该标签来自 crunched_X_train。
我会尝试用表格更好地解释。
我省略了表中无关紧要的列。
crunched_X_train:
id label
1 2
2 0
3 1
4 3
5 2
我希望 X_train 看起来像,带有新的列标签:
id label
1 2
1 2
1 2
.
.
2 0
2 0
3 1
3 1
我希望我可以这样做,但它会抛出
ValueError: Can only compare samely-labeled Series objects
X_train["label"] = crunched_X_train["label"].loc[crunched_X_train["id"] == X_train["id"]]
然后我尝试了这种迭代方法,这似乎是有效的。但这是不好的做法,需要永远。
for index, row in X_train.iterrows():
row["label"] = crunched_X_train["label"].loc[crunched_X_train["id"] == row["id"]]
任何帮助表示赞赏。谢谢。
解决方案
在 groupby 之后,id 列是 的索引crunched_X_train
。然后,您可以只将该索引加入原始数据框(id
列在哪里):
X_train.join(crunched_X_train["label"], on="id")
假设crunched_X_train
hasid
作为索引并且X_train
具有名为id
.
在此处查看熊猫文档: pandas.pydata.org/docs/reference/api/pandas.DataFrame.join.html
推荐阅读
- phpunit - 如何使 PHPUnit 部分重新生成代码覆盖率 HTML 日志
- reactjs - Service Worker OneSignal 冲突 React PWA
- python - 将所有列从 int64 转换为 int32
- unix - Unix 有没有办法用单个命令在两台服务器之间发送文件?
- ios - NavigationController 在 push 和 pop 后会切掉阴影吗?
- spring - 如何从 Open API 3 规范全局忽略 Spring Boot 的 API?
- ios - 如何预加载 SCNAudioSource 以防止第一次播放声音时出现延迟?
- angular - AngularFontAwesome 不会显示在通过管道注入 Html 的表格中
- javascript - Firebase 托管:如何生成可在所有页面上使用的全局“地图/数组”,而不是在每个页面加载时解析数据库
- ios - 用排序的图像填充表格