用于检查列中的行的Python循环为空,然后rep

2024-10-01 15:33:17 发布

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

我试图获取姓氏的非空值,但收到一个错误。我如何解决这个问题?p、 我有两千万行。在

数据帧:

FirstName   Middle  LastName
Tom          Ju     NaN
Kity         NaN    Rob

我的尝试:

^{pr2}$

我有以下错误

TypeError: string indices must be integers

Tags: 数据middlestring错误nanfirstname空值rob
2条回答

使用^{}

df['real_lastName'] = np.where(df['LastName'].isnull(), df['Middle'], df['LastName'] )

print (df)
  FirstName Middle LastName real_lastName
0       Tom     Ju      NaN            Ju
1      Kity    NaN      Rob           Rob

另一个可能的解决方案是使用^{}^{}

^{pr2}$

性能相似:

^{3}$
In [41]: %timeit df['real_lastName'] = np.where(df['LastName'].isnull(), df['Middle'], df['LastName'] )
13.3 ms ± 51.7 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [42]: %timeit df['real_lastName'] = df['LastName'].fillna(df['Middle'])
16.2 ms ± 58.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [43]: %timeit df['real_lastName'] = df['LastName'].combine_first(df['Middle'])
13 ms ± 100 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

另一个选择:

df["real_lastName"] = df['middle'].replace(np.NaN, '') + df['last_name'].replace(np.NaN, '')

相关问题 更多 >

    热门问题