python - 使用熊猫根据另一个数据框向数据框添加列
问题描述
我需要根据另一个数据帧的间隔在数据帧中创建一个新列。例如,我有一个数据框,其中时间列中有值,我想根据该时间列中的间隔在另一个数据框中创建列。
我认为一个实际的例子更容易理解:
带间隔的数据框
df1
time value var2
0 1.0 34.0 35.0
1 4.0 754.0 755.0
2 9.0 768.0 769.0
3 12.0 65.0 66.0
我需要过滤的数据框
df2
time value var2
0 1.0 23.0 23.0
1 2.0 43.0 43.0
2 3.0 76.0 12.0
3 4.0 88.0 22.0
4 5.0 64.0 45.0
5 6.0 98.0 33.0
6 7.0 76.0 11.0
7 8.0 56.0 44.0
8 9.0 23.0 22.0
9 10.0 54.0 44.0
10 11.0 65.0 22.0
11 12.0 25.0 25.0
应该导致
df3
time value var2 interval
0 1.0 23.0 23.0 1
1 2.0 43.0 43.0 1
2 3.0 76.0 12.0 1
3 4.0 88.0 22.0 1
4 5.0 64.0 45.0 2
5 6.0 98.0 33.0 2
6 7.0 76.0 11.0 2
7 8.0 56.0 44.0 2
8 9.0 23.0 22.0 2
9 10.0 54.0 44.0 3
10 11.0 65.0 22.0 3
11 12.0 25.0 25.0 3
编辑:正如 Shubham Sharma 所说,它不是过滤器,我想根据其他数据框中的间隔添加一个新列。
解决方案
您可以使用基于时间将inpd.cut
分类为离散间隔,然后用于获取标识不同有序值的数值数组。time
df2
df1
Series.factorize
df2['interval'] = pd.cut(df2['time'], df1['time'], include_lowest=True)\
.factorize(sort=True)[0] + 1
结果:
time value var2 interval
0 1.0 23.0 23.0 1
1 2.0 43.0 43.0 1
2 3.0 76.0 12.0 1
3 4.0 88.0 22.0 1
4 5.0 64.0 45.0 2
5 6.0 98.0 33.0 2
6 7.0 76.0 11.0 2
7 8.0 56.0 44.0 2
8 9.0 23.0 22.0 2
9 10.0 54.0 44.0 3
10 11.0 65.0 22.0 3
11 12.0 25.0 25.0 3
推荐阅读
- ios - 如何从设置中快速读取单声道音频值
- python - 无法使用 MingW 在 Windows 上编译 Cython
- yii - Yii 框架未在菜单数组上显示图像链接
- struts - 使用 struts 上传文件的 Dropzone
- php - 在多维数组中合并和计数
- macos - 如何在 x86 程序集中获取长字符串的长度以在断言上打印
- vuejs2 - 基于布尔值禁用 nuxt 链接
- c# - FromSql 导致错误,而查询在 pgAdmin 中工作
- php - Wordpress - 如何在每一页上显示标题?
- php - 国家、州和城市名称显示第一个表中的正确名称,但也显示第二个表的相同详细信息