使用lambd删除pandas数据帧的几行

2024-10-01 07:47:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前在pandas操作数据帧时遇到了一个方法链接的问题,下面是我的数据结构:

import pandas as pd

lst1 = range(100)
lst2 = range(100)
lst3 = range(100)
df = pd.DataFrame(
    {'Frenquency': lst1,
     'lst2Tite': lst2,
     'lst3Tite': lst3
    })

如果频率小于6,问题是get entries(rows),但这需要在方法链接中完成。在

我知道用传统的方法很简单,我可以做

df[df["Frenquency"]<6]

为了得到答案。在

但是,问题是如何用方法链接来实现,我尝试了

df.drop(lambda x:x.index if x["Frequency"] <6 else null)

但它引发了一个错误"[<function <lambda> at 0x7faf529d3510>] not contained in axis"

有谁能分享一些关于这个问题的线索吗?在


Tags: 数据方法lambdaimport数据结构pandasdf链接
3条回答

这能满足你的需要吗?在

df.mask(df.Frequency >= 6).dropna()

对于这种选择,您可以通过使用query方法来维护一个流畅的接口并使用方法链接:

>>> df.query('Frenquency < 6')
   Frenquency  lst2Tite  lst3Tite
0           0         0         0
1           1         1         1
2           2         2         2
3           3         3         3
4           4         4         4
5           5         5         5
>>>

比如说:

^{2}$

或者更具体地说:

>>> (df.rename(columns={'Frenquency':'F'})
...    .query('F < 6')
...    .assign(FF=lambda x: x.F**2))
   F  lst2Tite  lst3Tite  FF
0  0         0         0   0
1  1         1         1   1
2  2         2         2   4
3  3         3         3   9
4  4         4         4  16
5  5         5         5  25

或者这个:

df.drop(i for i in df.Frequency if i >= 6)

或就地使用:

^{2}$

相关问题 更多 >