删除熊猫框架中具有其他形状的行

我正在尝试删除熊猫数据框中在“MEL”列中具有不同于 (99, 13) 形状的行。


path    MEL  word

0   8d37d10e7f97ddea2eca9d39a4cf821b4457b041.wav    [[-10.160675, -13.804866, 0.9188097, 4.415375,...   one

1   9a8f761be3fa0d0a963f5612ba73e68cc0ad11ba.wav    [[-10.482644, -13.339122, -3.4994812, -5.29343...   one

2   314cdc39f628bc68d216498b2080bcc7a549a45f.wav    [[-11.076196, -13.980294, -17.289637, -41.0668...   one

3   cc499e63eee4a3bcca48b5b452df04990df83570.wav    [[-13.830213, -12.64104, -3.7780707, -10.76490...   one

4   38cdcc4d9432ce4a2fe63e0998dbca91e64b954a.wav    [[-11.967776, -23.27864, -10.3656, -8.786977, ...   one

我已经尝试了以下:


indexNames = merged[ merged['MEL'].shape != (99,13) ].index

merged.drop(indexNames , inplace=True)

然而,第一行代码给了我key error: True. 任何人都知道如何做到这一点?


叮当猫咪
浏览 237回答 3
3回答

慕的地8271018

你需要得到一系列的形状df['MEL'].apply(lambda x: x.shape)然后你可以测试这个以获得布尔系列df['MEL'].apply(lambda x: x.shape) == (93,3)然后用布尔系列索引new_df = df.loc[df['MEL'].apply(lambda x: x.shape) == (93,3), :]这将为您提供与您的形状相匹配的一切。这样做可能比使用 df.drop() 更容易,但你可以这样做correct = df['MEL'].apply(lambda x: x.shape) == (93,3) new_df = df.drop(correct[~correct].index)

慕桂英4014372

... 换句话说,您需要列'MEL'具有形状的所有行(99, 13)。我会做my_desired_df = merged[merged['MEL'].shape == (99,13)]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python