如果缺少另一列,则替换其中一列中的值

2024-04-18 21:32:15 发布

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

数据

我有一个名为data的数据帧,如下所示:

Name              ID
JAMES             252
STEPHEN           578
JOY               nan
ROGELIO           473
FACS              nan
CLIFFORD          793
data['Name'] is a column of strings, and data['ID'] has numeric values.

目标

每当数据['ID']丢失时,我想用丢失的值NaN替换数据['Name'],即NaN。你知道吗

结果是:

Name              ID
JAMES             252
STEPHEN           578
NaN               nan
ROGELIO           473
NaN               nan
CLIFFORD          793

我在网上搜索过,但类似的答案都是关于使用fillna(),这不是我想要的。你对怎么做有什么建议吗?你知道吗


Tags: of数据nameiddataiscolumnnan
3条回答

这个方法怎么样?你知道吗

import pandas as pd
import numpy as np
a = {'Name':['JAMES','STEPHEN','JOY','ROGELIO','FACS','CLIFFORD'],'ID':[252,578,np.nan,473,np.nan,793]}
df = pd.DataFrame(a)

df.loc[df['ID'].isnull() , 'Name'] = np.nan
print(df)

输出:

       Name     ID
0     JAMES  252.0
1   STEPHEN  578.0
2       NaN    NaN
3   ROGELIO  473.0
4       NaN    NaN
5  CLIFFORD  793.0

如果要删除NaN值,请添加以下内容:

df = df.dropna(how='any')
print(df)

输出:

       Name     ID
0     JAMES  252.0
1   STEPHEN  578.0
3   ROGELIO  473.0
5  CLIFFORD  793.0

编辑:我做了相反的方法,现在它是正确的。你知道吗

pandas.DataFrame.mask非常适合:

df.mask(df['ID'].isnull())

输出:

       Name     ID
0     JAMES  252.0
1   STEPHEN  578.0
2       NaN    NaN
3   ROGELIO  473.0
4       NaN    NaN
5  CLIFFORD  793.0

可以使用.loc函数查找df['ID']为null的所有索引,并将df['NAME']设置为np.nan公司在那里

import numpy as np

df.loc[df['ID'].isnull() , 'NAME'] = np.nan

相关问题 更多 >