python - 基于另一个 DataFrame 的 DataFrame 的新列
问题描述
我想将“文本”列与 B 值最接近 <= A 值的第一个 DataFrame 结合起来。DataFrames 长度不相等。
a = np.array(range(10, 35, 5))
b = np.array(range(0, 30, 5)) + 2
b_text = [random.choice(string.ascii_letters) for i in range(len(b))]
df1 = pd.DataFrame(a, columns=['A'])
df2 = pd.DataFrame(list(zip(b, b_text)), columns=['B', 'text'])
解决方案
我认为需要merge_asof
:
#if problem with different dtypes
#df1['A'] = df1['A'].astype(np.int64)
#df2['B'] = df2['B'].astype(np.int64)
df = pd.merge_asof(df1, df2, left_on='A', right_on='B')
print (df)
A B text
0 10 7 R
1 15 12 y
2 20 17 i
3 25 22 a
4 30 27 G
推荐阅读
- xamarin - AWS Cognito 电子邮件忘记密码代码几乎立即过期
- ocaml - reasonml 中的 -> 和 |> 有什么区别?
- sql-server - 访问 INFORMATION_SCHEMA 需要哪些权限?
- ios - 每个项目的 CollectionView 分页起点
- python - TensorFlow 2.0:如何控制已保存模型的名称?
- cucumber-jvm - 如何在基于环境的黄瓜场景大纲示例中传递参数?
- c++ - 验证没有字符和负输入的输入
- reactjs - Log4js-node 找不到集群模块
- azure-devops - 如何在 Azure Devops 中显示显示构建指标的仪表板
- swift - UITableview 与单元格两个单元格