我有一个数据框,如下所示,其中Name, Marks, Grade
是列名:
print (df)
Name Marks Grade
0 Abc 70 A
1 Def 42 D
2 Ghi 54 D
3 Name Marks Grade
4 Jkl 31 F
5 Mno 76 B
6 Name Marks Grade
7 Pqr B1 A
8 Stu 23 F
9 Vwx 90 A
10 Name Marks Grade
11 Yz 58 C
我希望删除所有值与列名相同的行,以获取以下数据框-
print (df)
Name Marks Grade
0 Abc 70 A
1 Def 42 D
2 Ghi 54 D
4 Jkl 31 F
5 Mno 76 B
7 Pqr B1 A
8 Stu 23 F
9 Vwx 90 A
11 Yz 58 C
有人可以建议如何做到吗?
答案 0 :(得分:1)
您可以比较一个列名,例如第三,并按boolean indexing
进行过滤:
c = df.columns[2]
df1 = df[df[c] != c]
工作原理类似:
df1 = df[df['Grade'] != 'Grade']
如果要比较所有列的名称也是可能的,则仅按DataFrame.all
测试每行的所有值是否为True
:
df1 = df[(df != df.columns).all(axis=1)]
print (df1)
Name Marks Grade
0 Abc 70 A
1 Def 42 D
2 Ghi 54 D
4 Jkl 31 F
5 Mno 76 B
7 Pqr B1 A
8 Stu 23 F
9 Vwx 90 A
11 Yz 58 C
答案 1 :(得分:0)
您可以使用布尔掩码和df.drop在“标记”列中删除具有“标记”值的行。
bool_mask = df['Marks'] != 'Marks' #Make boolean mask where rows with 'Marks' are False.
df = df.drop(bool_mask)