我有以下命令,但我不完全理解
def func1(df):
df.loc[df['First Name'].isin(['n.a.', 'null']),
df.columns.drop(["Last Name", "Middle Name", "First Name"])] = "n.a."
return df我编写了下面的dataframe来测试它返回的内容
df1 = pd.DataFrame({"First Name": ['Alex', 'n.a.', 'null'],
"Last Name": ['Peterson', 'Doe', 8],
"Middle Name": ['John', 'Jack', 3],
"Pet": [2, 9, 3]})如果我理解正确,它会检查列‘Name’如果值是'n.a.‘还是“null”,然后删除除“姓”、“中间名”、“名名”以外的所有其他列?但是,什么是等于n.a。在最后?通过在前面提到的dataframe上运行函数,它基本上返回相同的dataframe,而不更改任何内容。由于这个原因,我试图拆分函数,以单独检查它。
def func2(df):
df.loc[df['First Name'].isin(['n.a.', 'null'])] = "n.a."
return df使用相同的dataframe进行了尝试,我注意到对于具有n.a的行。或者在第一个名称中为null,它将其他元素转换为n.a。为什么我的dataframe不对func1进行相同的更改?
发布于 2022-08-30 07:02:55
首先,提供的DataFrame无效,所有列表都必须具有相同的长度。
让我们使用:
df1 = pd.DataFrame({"First Name": ['Alex', 'n.a.', 'null'],
"Last Name": ['Peterson', 'Doe', 8],
"Middle Name": ['John', 'Jack', 3],
"Pet": [2, 9, 3]}) # removed 2 values现在,函数选择了“名字”为['n.a.', 'null']的所有行和所有非["Last Name", "Middle Name", "First Name"]的列。这给我们留下了一行1/2和列“宠物”。赋值使它们成为"n.a.",实际上输出是:
First Name Last Name Middle Name Pet
0 Alex Peterson John 2
1 n.a. Doe Jack n.a. # this value was updated
2 null 8 3 n.a. # this value was updatedhttps://stackoverflow.com/questions/73538299
复制相似问题