按列移动记录中的值。

2024-04-27 14:16:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,其中一个观察值有不匹配的列。有点像这样:

  Names    Age   Dept
0  John     21  sales
1   Joe     22     IT
2   Ann     20     IT
3    24  sales    NaN

我想把值移到下一列,并在第一列上赋值NaN,而第一列实际上缺少值

   Names  Age   Dept
0  John   21  sales
1   Joe   22     IT
2   Ann   20     IT
3   NaN   24  sales

我搜索了很多,但没有找到一个方法来做这件事。我觉得应该有一个内在的方法,以一种简单的方式来做这件事

我是一个新手编程,所以抱歉,如果这是一个基本的问题


Tags: 数据方法agenames编程方式itnan
2条回答

通过^{}^{}或函数^{}创建布尔掩码以查找有问题的行,然后^{}仅筛选行:

m = pd.to_numeric(df['Names'], errors='coerce').notna()
#alternative
#m = df['Names'].str.isnumeric()

df[m] = df[m].shift(axis=1)
print (df)
  Names Age   Dept
0  John  21  sales
1   Joe  22     IT
2   Ann  20     IT
3   NaN  24  sales

或者使用df[...]=df[...]结构:

df[df['Dept'].isnull()]=df[df['Dept'].isnull()].shift(axis=1)

现在:

print(df)

是:

  Names Age   Dept
0  John  21  sales
1   Joe  22     IT
2   Ann  20     IT
3   NaN  24  sales

shift(axis=1)逐行移动,如果删除axis=1部分,shift()它将逐列移动

相关问题 更多 >