我试图创建一个条件,如果列标题在我的数据框架是等于未命名: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
在第一行末尾有一个':'。缩进
除此之外代码不应该给出任何语法错误