python/pandas提供了一种从给定起始点的数据帧中删除行的方法

2024-04-23 15:10:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我是pandas的初学者,我想知道如果给定一个起点来删除在该起点之前的所有行,那么最好的实现是什么。你知道吗

例如:

df:
      a  b  c  d
name            
aa    1  1  1  1
bb    0  0  0  0
cc    1  0  1  0
dd    0  0  0  0
ee    1  1  1  1

如果以cc作为起点,我希望最终结果是

df2:
      a  b  c  d
name            
cc    1  0  1  0
dd    0  0  0  0
ee    1  1  1  1

Tags: namepandasdfddeeaaccdf2
2条回答

使用^{}:从起点到终点进行选择:

df = df.loc['cc':]
print (df)
    a  b  c  d
cc  1  0  1  0
dd  0  0  0  0
ee  1  1  1  1

如果可能,请选择重复的值并需要按第一个值选择:

print (df)
    a  b  c  d
aa  1  1  1  1
bb  0  0  0  0
cc  1  0  1  0
dd  0  0  0  0
cc  1  1  1  1

pos = df.index.get_loc('cc').argmax()
#alternative
#pos = df.index.searchsorted('cc')
df = df.iloc[pos:]
print (df)
    a  b  c  d
cc  1  0  1  0
dd  0  0  0  0
cc  1  1  1  1

给定数据:

data = {'a': [1,0,1,0,1], 
    'b': [1,0,0,0,1], 
    'c': [1,0,1,0,1],
    'd': [1,0,0,0,1]}
df = pd.DataFrame(data, index = ['aa', 'bb', 'cc', 'dd', 'ee'])

也可以使用索引号:

print(df[2:])

    a   b   c   d
cc  1   0   1   0
dd  0   0   0   0
ee  1   1   1   1

#keep top 3
print(df[:3])

    a   b   c   d
aa  1   1   1   1
bb  0   0   0   0
cc  1   0   1   0

#drop bottom 3
print(df[:-3])  

    a   b   c   d
aa  1   1   1   1
bb  0   0   0   0

#drop selected (drop first row)
df.drop(df.index[0])

    a   b   c   d
bb  0   0   0   0
cc  1   0   1   0
dd  0   0   0   0
ee  1   1   1   1

相关问题 更多 >