【发布时间】:2019-03-20 02:37:27
【问题描述】:
我无法描述我的问题,所以我将直接进入它。以下是一些测试数据:
import pandas as pd
df = pd.DataFrame(data={"family":["Smith","Miller","Simpson","Miller","Simpson","Smith","Miller","Simpson","Miller"],
"first_name":["Anna","Bart","Lisa","Ida","Paul","Bridget","Harry","Dustin","George"],
"shirt_color":["green","yellow","red","yellow","green","red","yellow","red","red"]})
现在我想在我的原始数据框中创建一个新列,其中包含每个家庭的 shirt_color 份额,因此每一行都带有例如family Miller 和 shirt_color yellow 具有相同的值 0.75 等。
我尝试了几种方法,但都没有成功。
df = df.groupby("family").apply(lambda x: x.groupby("shirt_color").apply(lambda x: x.size()/familysize))
这看起来很有希望,但正如您所见,我无法再访问最后一个 lambda 函数中的家庭成员数量。我还尝试创建一个只有 family 的 groupby 对象并遍历数据帧,将所有数据帧按颜色单独分组,但不知何故我最终无法将数据帧放回一个。
这对数据框来说似乎不是一件很奇特的事情,所以我确信有一种简单的方法可以做到这一点,但我没有想法。
非常感谢您提前提供的帮助!
【问题讨论】:
标签: python python-3.x pandas dataframe pandas-groupby