我根据'ages'列将以下数据框划分为4个区间。假设我想要另一个数据帧具有相同的时间间隔,有什么快速的方法可以做到吗?换句话说,以下行
df1['age_groups'] = pd.cut(df1.ages,4)
print(df1['age_groups'])
将数据帧划分为以下间隔
(1.944, 16.0] 5
(16.0, 30.0] 3
(30.0, 44.0] 2
(44.0, 58.0] 2
但是如果我有一个不同的数据帧,在一个具有相同名称的列中有稍微不同的数字,那么相同的代码将产生不同的间隔。如何确保可以将其他数据帧细分为相同的间隔?
ages=[35.000000,
2.000000,
27.000000,
14.000000,
4.000000,
58.000000,
20.000000,
39.000000,
14.000000,
55.000000,
2.000000,
29.699118]
values=[1,0,1,1,0,0,0,1,0,0,1,1]
df1=pd.DataFrame()
df1['ages']=ages
df1['values']=values
#print(df1)
df1['age_groups'] = pd.cut(df1.ages,4)
- 使用
retbins
关键字 保存来自第一个DataFrame的bin - 使用它作为第二个DataFrame的
bins
参数:
df1['age_groups'], bins = pd.cut(df1["ages"], 4, retbins=True)
df2['age_groups'] = pd.cut(df2["ages"], bins=bins)
<编辑>工作的例子:编辑>import numpy as np
import pandas as pd
np.random.seed(100)
df1 = pd.DataFrame({"ages": np.random.randint(10, 80, 20)})
df2 = pd.DataFrame({"ages": np.random.randint(10, 80, 20)})
df1['age_groups'], bins = pd.cut(df1["ages"], 4, retbins=True)
df2['age_groups'] = pd.cut(df2["ages"], bins=bins)
>>> df1.head()
ages age_groups
0 18 (11.935, 28.25]
1 34 (28.25, 44.5]
2 77 (60.75, 77.0]
3 58 (44.5, 60.75]
4 20 (11.935, 28.25]
>>> df2.head()
ages age_groups
0 11 NaN
1 23 (11.935, 28.25]
2 14 (11.935, 28.25]
3 69 (60.75, 77.0]
4 77 (60.75, 77.0]