如何自参考熊猫数据框中的列?

Jam*_*ham 6 python scipy pandas

在Python的Pandas中,我这样使用数据框:

drinks = pandas.read_csv(data_url)
Run Code Online (Sandbox Code Playgroud)

其中data_url是CSV文件的字符串URL

当为所有“轻饮者”由1杯饮料组成的所有“轻饮者”索引框架时,将写入以下内容:

drinks.light_drinker[drinks.light_drinker == 1]
Run Code Online (Sandbox Code Playgroud)

有没有更像DRY的方式可以自我引用“父母”?即类似:

drinks.light_drinker[self == 1]
Run Code Online (Sandbox Code Playgroud)

ely*_*ase 6

现在,您可以根据需要使用查询分配

drinks.query('light_drinker == 1')
Run Code Online (Sandbox Code Playgroud)

或更改df:

df.assign(strong_drinker = lambda x: x.light_drinker + 100)
Run Code Online (Sandbox Code Playgroud)

旧答案

目前暂不讨论,但此处讨论的是对您的想法的增强。对于简单的情况where可能就足够了。新的API可能如下所示:

df.set(new_column=lambda self: self.light_drinker*2)
Run Code Online (Sandbox Code Playgroud)


aus*_*acy 1

我不知道有什么方法可以像PandasselfthisPandas 那样引用父对象,但也许另一种做你想做的事情的方法可以被认为是更 DRY 的where()

drinks.where(drinks.light_drinker == 1, inplace=True)
Run Code Online (Sandbox Code Playgroud)