pandas 将标题与行进行比较并删除重复的行

kar*_*ran 2 python numpy python-3.x pandas pandas-groupby

我有一个数据框,其中行中有重复的列标题。我只需要删除重复的标头名称而不是重复的值。请注意,在这种情况下,标头为“无”

输入:

0. Gender age occu name 
1. F      21   A    B    
2. Gender age occu name
3. M      22   C    D
4. Gender age occu name
5. M      23   F    E
6. M      23   F    E
Run Code Online (Sandbox Code Playgroud)

所需输出:

0. Gender age occu name 
1. F      21   A    B    
2. M      22   C    D
3. M      23   F    E
5. M      23   F    E
Run Code Online (Sandbox Code Playgroud)

为此我正在尝试:

for i in range(0,len(a)-1):
print(a.iloc[i])
if(a.loc[0] == a.loc[i+1]).all() == True:
    print('yes')
    a.drop(i)
        
Run Code Online (Sandbox Code Playgroud)

请注意,我无法直接获取行名称(第 0 行,因为它可能会发生变化,这就是为什么我必须使用循环将所有其他行与第 0 行进行比较,并且必须在匹配的地方删除该行)。将第 0 行视为主行。

jez*_*ael 5

如果需要所有行,如果第一列名称与第一列不匹配,请boolean indexing使用DataFrame.iloc

print (df)
   Gender  age  occu  name
0       F   21     A     B
1  Gender  age  occu  name
2       M   22     C     D
3  Gender  age  occu  name
4       M   23     F     E
5       M   23     F     E
Run Code Online (Sandbox Code Playgroud)
df1 = df[df.iloc[:, 0] != df.columns[0]]
#alternative
#df1 = df[df.iloc[:, 0].ne(df.columns[0])]
print (df1)
  Gender age occu name
0      F  21    A    B
2      M  22    C    D
4      M  23    F    E
5      M  23    F    E
Run Code Online (Sandbox Code Playgroud)