熊猫,分割或分割(减去)数据框

时间:2018-10-16 07:37:48

标签: python pandas indexing split divide

我有一个数据框“ moment_f”。 我必须从moment_f中删除一些包含名称“ AH”的行。 但是,我不会删除每个“ AH”行,因此我创建了一个新的数据框 包含我要删除的“ AH”。

ah1 = moment_f[moment_f["TextGridLabel"] == "AH"]
ah_d = ah1.iloc[::2] 
# got the odd rows of "AH" which is what I need to get rid of from the original dataframe "moment_f". 

所以现在我要从数据帧“ moment_f”中删除数据帧“ ah_d”。

串联的反面是什么? 我已经尝试过拖放,拆分等操作,但是它不起作用。

2 个答案:

答案 0 :(得分:0)

IIUC需要

df = moment_f[~moment_f.index.isin(ah_d.index)]

答案 1 :(得分:0)

您可以通过仅对索引使用 来避免创建“子集数据框”。使用iloc可以做到,但并非微不足道。重要的是,以下解决方案仅适用于整数位置,而不适用于索引标签,即它不采用唯一索引。

import numpy as np

# some example dataframe
df = pd.DataFrame({'A': [1, 2, 3, 1, 1, 2, 1, 1, 1, 3]})

# extract indices to remove
idx = np.where(df['A'] == 1)[0][::2]  # array([0, 4, 7], dtype=int64)

# include all indices which do not match idx
res = df.iloc[~np.in1d(np.arange(df['A'].shape[0]), idx)]

print(res)

   A
1  2
2  3
3  1
5  2
6  1
8  1
9  3

如果您的索引是常规pd.RangeIndex,即0, 1, ..., n,则可以通过pd.DataFrame.drop按标签进行放置:

res = df.drop(idx, axis='rows')