如果列标题=特定值条件



我试图创建一个条件,如果列标题在我的数据框架是等于未命名:0 VALUE VALUE.1 VALUE.2然后我想删除前两行并重命名标题

Unnamed: 0       VALUE     VALUE.1        VALUE.2
Name            Hobbies     Dislikes    Favorite Color
Ben             NaN         NaN              NaN
Alex            NaN         Running          Red
Mike            NaN         Cartoons         Blue
Mark            NaN         Pizza            Yellow

我知道我能做到

df = df.drop([0,1])

但是我需要它是有条件的

I tried doing

if df.columns = {"Unnamed: 0", "VALUE", "VALUE.1", "VALUE.2"}:
df = df.drop([0,1])
df = df.rename(columns={"Unnamed: 0": "Name", "VALUE": "Hobbies", "VALUE.1": "Dislikes", "VALUE.2": "Favorite Color"})

但是我遇到了一个语法错误,我试图用我的列名创建一个条件。有任何线索如何解决这个问题吗?

try this:

cols = pd.Index(['Unnamed:0', 'VALUE', 'VALUE.1', 'VALUE.2'])
if df.columns.equals(cols):
df = df.set_axis(df.iloc[0], axis=1).iloc[1:]
print(df)
>>>
Name    Hobbies Dislikes    Favorite    Color
1   Ben     NaN     NaN         NaN         None
2   Alex    NaN     Running     Red         None
3   Mike    NaN     Cartoons    Blue        None
4   Mark    NaN     Pizza       Yellow      None

首先,您只需要删除第0行,因为columns不是一行。

那么==应该在if语句中使用,并且它是一个列表比较,所以添加。all()

import pandas as pd
df = pd.DataFrame(columns=["Unnamed: 0", "VALUE", "VALUE.1", "VALUE.2"])
df.loc[0] = ['Name', 'Hobbies', 'Dislikes', 'Favorite Color']
df.loc[1] = ['Ben', None, None, None]
print(df)
if (df.columns == ["Unnamed: 0", "VALUE", "VALUE.1", "VALUE.2"]).all():
df = df.drop([0])
df.columns = ['Name', 'Hobbies', 'Dislikes', 'Favorite Color']
print()
print(df)

输出:

Unnamed: 0    VALUE   VALUE.1         VALUE.2
0       Name  Hobbies  Dislikes  Favorite Color
1        Ben     None      None            None
Name Hobbies Dislikes Favorite Color
1  Ben    None     None           None

在第一行末尾有一个':'。缩进

除此之外代码不应该给出任何语法错误

最新更新