从单个列值熊猫创建最大和最小列值

问题描述 投票:3回答:1

我有一个像下面这样的数据框,我需要从基本列中创建两列。

输入

Kg
0.5
0.5
1
1
1
2
2
5
5
5

预期输出

Kg_From  Kg_To
0      0.5
0      0.5
0.5    1
0.5    1
0.5    1
1      2
1      2
2      5
2      5
2      5

如何在大熊猫中完成?

python python-3.x pandas dataframe
1个回答
0
投票

IIUC:

kgs = df.Kg.unique()

lower = [0] + list(kgs[:-1])
kg_dict = {k:v for v,k in zip(lower,kgs)}

new_df = pd.DataFrame({
             'Kg_From': df['Kg'].map(kg_dict),
             'Kg_To': df['Kg']
         })

输出:

   Kg_From  Kg_To
0      0.0    0.5
1      0.0    0.5
2      0.5    1.0
3      0.5    1.0
4      0.5    1.0
5      1.0    2.0
6      1.0    2.0
7      2.0    5.0
8      2.0    5.0
9      2.0    5.0

0
投票

假设您的kg列已排序:

s = df["Kg"].unique()
df["Kg_from"] = df["Kg"].map({k:v for k,v in zip(s[1:], s)}).fillna(0)
print (df)

    Kg  Kg_from
0  0.5      0.0
1  0.5      0.0
2  1.0      0.5
3  1.0      0.5
4  1.0      0.5
5  2.0      1.0
6  2.0      1.0
7  5.0      2.0
8  5.0      2.0
9  5.0      2.0
© www.soinside.com 2019 - 2024. All rights reserved.