提问人:Drevent 提问时间:10/28/2023 最后编辑:toyota SupraDrevent 更新时间:10/28/2023 访问量:31
Pandas - 将区间指数合并为浮点数
Pandas - merging Interval Index to float
问:
我正在使用 qcut 获取预测值的 bin 并计算每个 bin 的标准误差。然后,我想通过将该数据帧的预测映射到我所做的 bin 的 SE,将这些标准误差应用于另一个 DataFrame 中的预测。
下面是我正在使用的代码,最后一行是弥补的。
df = pd.DataFrame(np.random.randint(0,100,size=(1000, 2)), columns=['Pred','Error'])
df2 = pd.DataFrame(np.random.randint(0,100,size=(1000, 2)), columns=['Pred'])
df['binned']=pd.qcut(df['Pred'], 10)
binSEs=df.groupby(['binned'],observed=False)['Error'].std()
**df2['binSE']=unknownintervaljoin(df['Pred'],binSEs)**
或者,如果我可以在 df2 中基于 binSE 创建一个“binned”列,我可以合并 binSEs 系列。
答:
0赞
Alex Nea Kameni
10/28/2023
#1
为此,您可以先根据 中的值计算 binned 列 ,然后在 'binned' 列上合并:df2
df['Pred']
binSEs
import pandas as pd
import numpy as np
# Create the dataframes
df = pd.DataFrame(np.random.randint(0, 100, size=(1000, 2)), columns=['Pred', 'Error'])
df2 = pd.DataFrame(np.random.randint(0, 100, size=(1000, 1)), columns=['Pred'])
# Calculate the 'binned' column in df2
df2['binned'] = pd.qcut(df2['Pred'], 10, labels=False, duplicates='drop')
# Calculate binSEs
df['binned'] = pd.qcut(df['Pred'], 10)
binSEs = df.groupby(['binned'], observed=False)['Error'].std()
# Merge df2 with binSEs based on the 'binned' column
df2['binSE'] = df2['binned'].map(binSEs)
print(df2.head())
在此代码中,我们首先使用 计算 'binned' 列。然后,我们根据“binned”列进行合并,确保正确执行映射。最后,我们将生成的数据帧中的“Error”列重命名为“binSE”。df2
pd.qcut
df2
binSEs
df2
这应该为您提供“binSE”列,其中包含基于 .df2
df
评论
df['binSE'] = df["binned"].map(binSEs)
df.groupby(['binned'],observed=False)['Error'].transform("std")
pd.cut(df2["Pred"], pd.IntervalIndex(binSEs.index)).map(binSEs)