只保留值大于某个值的行



我想修改一个数据集,使其检查列"column"的所有行。每一行都有一个字符串值。我想丢弃字符串长度小于3的行。如果我想丢弃值为9的所有行,这就有效了。

modifiedDf = modifiedDf[modifiedDf['Column'] != "9"]

但如果我把它改成

modifiedDf = modifiedDf[len(modifiedDf['Column']) > 3]

它只是给了我一个密钥错误:true。

编辑:

是否可以只检查某些行的长度?例如,我有另一个colClass。我想检查类为"Marke"的所有行的"Col"。

基本上,我想保持其余行的原样,只过滤出Col length<3当且仅当该行的Class值被标记时。如果类值不被标记,则即使Len<3.

mask = modifiedDf['Class'] == "Marke"

您可以在索引器中使用两个条件:

df = pd.DataFrame({'Column': ['aa', 'asdfdsf', 'bb', 'sdfdsss', 'aa', 'a'],
'Class': ['Marke']*4 + ['Other']*2},)

df = df[~((df['Class']=='Marke') & (df['Column'].str.len() < 3))]

len(modifiedDf['Column'])等于len(modifiedDf),因此len(modifiedDf['Column']) > 3很可能是True,这会给您带来错误,因为modifiedDf[True]试图访问名为True的列。

我想你想要

modifiedDf = modifiedDf[modifiedDf['Column'].str.len() > 3]

最新更新