我想修改一个数据集,使其检查列"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]