Pandas - 将区间指数合并为浮点数

Pandas - merging Interval Index to float

提问人:Drevent 提问时间:10/28/2023 最后编辑:toyota SupraDrevent 更新时间:10/28/2023 访问量:31

问:

我正在使用 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 系列。

python-3.x pandas 合并 间隔

评论

0赞 Chrysophylaxs 10/28/2023
我想这可能是你想要的。但你也可以直接通过df['binSE'] = df["binned"].map(binSEs)df.groupby(['binned'],observed=False)['Error'].transform("std")
0赞 Drevent 10/28/2023
但是如何在 df2 中制作只有 Pred 变量的 binSE 列?@Chrysophylaxs
0赞 Chrysophylaxs 10/28/2023
我并不完全清楚你想要什么......或:pd.cut(df2["Pred"], pd.IntervalIndex(binSEs.index)).map(binSEs)

答:

0赞 Alex Nea Kameni 10/28/2023 #1

为此,您可以先根据 中的值计算 binned 列 ,然后在 'binned' 列上合并:df2df['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”。df2pd.qcutdf2binSEsdf2

这应该为您提供“binSE”列,其中包含基于 .df2df