将相同的选择(剪切)应用于多个数据帧

osc*_*one 1 python filter dataframe pandas

我的问题是关于在pandas(python.)中进行选择.

如您所知,可以selection通过执行(或"切割")对数据帧应用

df = df[df.area > 10]
Run Code Online (Sandbox Code Playgroud)

如果你想(比如说)选择列值area大于的所有行10.但是假设你有许多数据帧,并且你最终希望将这个剪辑应用于所有数据帧.做一些像这样的事情会很好

cut = dataframe.area > 10
Run Code Online (Sandbox Code Playgroud)

然后以某种方式能够做到

df = df[cut]
Run Code Online (Sandbox Code Playgroud)

显然,鉴于上述策略,它将无效,因为它cut指的是特定的数据帧.但有没有办法来估计这种行为?

也就是说,是否可以定义一个cut特定的数据帧,并且可以应用为df = df[cut]

piR*_*red 5

我可以得到类似的东西

cut = lambda df: df[df.area > 10]
cut(df)
Run Code Online (Sandbox Code Playgroud)

每个@root

cut = 'area > 10'
df.query(cut)
Run Code Online (Sandbox Code Playgroud)

Per @ayhan

cut = lambda x: x.area > 10
df[cut]
Run Code Online (Sandbox Code Playgroud)

定时

100行

df = pd.DataFrame(np.random.randint(0, 20, 100), columns=['area'])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

1,000,000行

df = pd.DataFrame(np.random.randint(0, 20, 1000000), columns=['area'])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 所以我误解了.在0.18.0中你也可以这样做:http://pandas.pydata.org/pandas-docs/version/0.18.1/whatsnew.html#method-chaininng-improvements(我的意思是`cut = lambda df:df .area> 10`和`df [cut]` (4认同)