如何根据组ID和第一个值的百分比创建一个新的Pandas列?

时间:2019-08-31 12:03:01

标签: pandas dataframe

这是原始输入数据框。

Input dataframe

这是预期的输出数据帧。请帮助,谢谢。

Output dataframe

2 个答案:

答案 0 :(得分:0)

尝试这个:

>>> df["Age_first"]=df.join(df.groupby(df["Name"]).agg({"Age":"first"}), on="Name", rsuffix="_2")[["Age_2"]]
>>> df["Ratio"]=df["Age"]/df["Age_first"]
>>> df
  Name  Age  Age_first  Ratio
0    A    2          2    1.0
1    A    3          2    1.5
2    A    1          2    0.5
3    B   10         10    1.0
4    B    8         10    0.8
5    B   12         10    1.2
>>> df = df.drop("Age_first", axis=1)
>>> df
  Name  Age  Ratio
0    A    2    1.0
1    A    3    1.5
2    A    1    0.5
3    B   10    1.0
4    B    8    0.8
5    B   12    1.2

答案 1 :(得分:0)

看看这是否适合您

df['ratio']= df.groupby('Name')['Age'].apply(lambda x : (x.count()/x.sum())*x)