我有一份清单:
ac = [2,3,4]
除了列表ac中提到的行之外,我需要DataFrame中的所有内容。
我试过:
dataframe.iloc[:-a, :]
但我有错误。
我该怎么办?
发布于 2018-06-13 15:46:54
我认为有必要违约RangeIndex
获取索引值的值Index.difference
表ac
并按DataFrame.loc
:
df = pd.DataFrame({'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')})
print (df)
A B C D E F
0 a 4 7 1 5 a
1 b 5 8 3 3 a
2 c 4 9 5 6 a
3 d 5 4 7 9 b
4 e 5 2 1 2 b
5 f 4 3 0 4 b
ac = [2,3,4]
idx = df.index.difference(ac)
df = df.loc[idx]
print (df)
A B C D E F
0 a 4 7 1 5 a
1 b 5 8 3 3 a
5 f 4 3 0 4 b
按列表中定义的位置筛选的所有索引的通用解决方案ac
带着numpy.setdiff1d
和numpy.arange
并按DataFrame.iloc
:
df = pd.DataFrame({'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')}, index=list('ABCDEF'))
print (df)
A B C D E F
A a 4 7 1 5 a
B b 5 8 3 3 a
C c 4 9 5 6 a
D d 5 4 7 9 b
E e 5 2 1 2 b
F f 4 3 0 4 b
ac = [2,3,4]
pos = np.setdiff1d(np.arange(len(df.index)), ac)
df = df.iloc[pos]
print (df)
A B C D E F
A a 4 7 1 5 a
B b 5 8 3 3 a
F f 4 3 0 4 b
https://stackoverflow.com/questions/-100001671
复制相似问题