我正在尝试删除熊猫数据框中在“MEL”列中具有不同于 (99, 13) 形状的行。path MEL word0 8d37d10e7f97ddea2eca9d39a4cf821b4457b041.wav [[-10.160675, -13.804866, 0.9188097, 4.415375,... one1 9a8f761be3fa0d0a963f5612ba73e68cc0ad11ba.wav [[-10.482644, -13.339122, -3.4994812, -5.29343... one2 314cdc39f628bc68d216498b2080bcc7a549a45f.wav [[-11.076196, -13.980294, -17.289637, -41.0668... one3 cc499e63eee4a3bcca48b5b452df04990df83570.wav [[-13.830213, -12.64104, -3.7780707, -10.76490... one4 38cdcc4d9432ce4a2fe63e0998dbca91e64b954a.wav [[-11.967776, -23.27864, -10.3656, -8.786977, ... one我已经尝试了以下:indexNames = merged[ merged['MEL'].shape != (99,13) ].indexmerged.drop(indexNames , inplace=True)然而,第一行代码给了我key error: True. 任何人都知道如何做到这一点?
3 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
你需要得到一系列的形状
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
TA贡献1871条经验 获得超13个赞
... 换句话说,您需要列'MEL'
具有形状的所有行(99, 13)
。我会做
my_desired_df = merged[merged['MEL'].shape == (99,13)]
添加回答
举报
0/150
提交
取消