我知道我们可以使用以下代码基于给定数据集的列创建十进制列,以考虑数据中是否存在领带(请参见How to qcut with non unique bin edges?)
import numpy as np
import pandas as pd
# create a sample
np.random.seed([3,1415])
df = pd.DataFrame(np.random.rand(100, 3), columns=list('ABC'))
# sort by column C
df = df.sort_values(['C'] , ascending = False )
# create decile by column C
df['decile'] = pd.qcut(df['C'].rank(method='first'), 10, labels=np.arange(10, 0, -1))
是否有一种简单的方法可以保存df中的剪切点,然后使用相同的剪切点剪切新的数据集?例如:
np.random.seed([1])
df_new = pd.DataFrame(np.random.rand(100, 1), columns=list('C'))
答案 0 :(得分:1)
您可以使用.left
获取全部bins
s1=pd.Series([1,2,3,4,5,6,7,8,9])
s2=pd.Series([2,3,4,6,1])
a=pd.qcut(s1,10).unique()
bins=[x.left for x in a ] + [np.inf]
pd.cut(s2,bins=bins)