从Pandas df中删除行列表

时间:2017-03-28 03:47:48

标签: python pandas

我创建了一个循环来获取要删除的行列表。

cols = []
for i in range(len(df)):
    if i != len(df)-1:
        if (df['Player'][i] == df['Player'][i+1]):
            cols.append(i+1)

现在我想通过cols并按行号删除每一行。我尝试使用以下循环删除这些行,但它不起作用。

for col in cols:
    df.drop([[col]])

3 个答案:

答案 0 :(得分:1)

用于删除行:

df.drop(rows,inplace=True)

删除列:

df.drop(cols,axis=1,inplace=True)

测试:

df = pd.DataFrame({'A':[1,2,3,4,5],'B':[1,2,3,4,5]})
print('DataFrame with initialised :\n',df,'\n')
df.drop([2,4],inplace=True)
print('DataFrame after dropping 2 rows:\n',df,'\n')
df.drop(['B'],axis=1,inplace=True)
print('DataFrame after dropping 1 column:\n',df,'\n')

输出:

DataFrame with initialised :
   A  B
0  1  1
1  2  2
2  3  3
3  4  4
4  5  5 

DataFrame after dropping 2 rows:
   A  B
0  1  1
1  2  2
3  4  4 

DataFrame after dropping 1 column:
   A
0  1
1  2
3  4 

答案 1 :(得分:0)

如果您只想删除col'Player'中具有重复值的行,您可以:

N

答案 2 :(得分:0)

看起来您正试图摆脱前面有Player重复值的行。使用pandas时,请始终尝试使用向量化:df.Player == df.Player.shift()检查Player中的每个条目是否等于最后一个,因此单行解决方案

df[df.Player != df.Player.shift()]