pandas - 熊猫得到行对应
问题描述
使用熊猫,我怎样才能找到一个数据帧的行在另一个数据帧中的位置?
例子:
我们有一个数据框 df_A
import pandas as pd
df_A = pd.DataFrame([[1, 2,3], [1, 3,4], [1, 4,9]], columns=['idx_1', 'idx_2','values'])
和另一个数据框 df_B
df_B = pd.DataFrame([[1, 2], [1, 4]], columns=['idx_1', 'idx_2'])
我想要df_A的idx列与df_B的idx列之间的对应关系:
idx_1 idx_2 values row_B
0 1 2 3 0
1 1 3 4 NAN
2 1 4 9 1
解决方案
DataFrame.merge
与左连接和DataFrame.reset_index
and一起使用rename
以避免丢失 的索引df_B
:
df2 = df_B.reset_index().rename(columns={'index':'row_B'})
df = df_A.merge(df2, how='left', on=['idx_1', 'idx_2'])
print (df)
idx_1 idx_2 values row_B
0 1 2 3 0.0
1 1 3 4 NaN
2 1 4 9 1.0
推荐阅读
- python - 如何将 for 循环修复到其他事物
- python - 如何使用多处理并行使用 python gneerator?
- javascript - 反应多个输入字段 onChange 不起作用
- segmentation-fault - 尝试在 C 中重新编码 itoa 时出现段错误
- asp.net-core - Blazor 身份验证 - Http 调用确实适用于匿名
- docker - 在 kubernetes 中运行的我的 docker 映像(基于公共 jenkins 代理映像)中缺少文件
- c++ - 将 80 位十六进制数从 char 数组复制到 uint16_t 向量或数组
- objective-c - OpenCV QRCodeDetector 不适用于 IOS 目标 C++
- haskell - 为什么map使用的这个函数需要返回一个(单例)列表而不是一个元素?
- flutter - 有多少 StreamBuilders 太多了?