从 df 列中具有空值的列表中提取字符串

问题描述 投票:0回答:1

我正在尝试从 df 列中的列表中提取文本。尝试在不为空但收到 TypeError: can only join an iterable 的数据帧切片上使用 apply。

import pandas as pd

data = {'id': [['54930058LIMFSJIOLQ48'],np.nan,['5493006B6WMKNQ8QNP51 254900425JAG3QVRMM28']]}
df = pd.DataFrame(data)
    id
0   [54930058LIMFSJIOLQ48]
1   NaN
2   [5493006B6WMKNQ8QNP51 254900425JAG3QVRMM28]

尝试了下面的代码,但很难理解错误来自哪里。

df.loc[df['id'].notnull(), 'id'] = df['id'].apply(lambda x: ', '.join(x))
python dataframe iterable
1个回答
0
投票

df['id'].apply(lambda x: ', '.join(x))
正在尝试将
', '.join
应用到所有行,包括具有
NaN
的行。

你可以使用这样的东西:

df["id"] = df.loc[df["id"].notna(), "id"].str[0].str.split().apply(", ".join)
                                           id
0                        54930058LIMFSJIOLQ48
1                                         NaN
2  5493006B6WMKNQ8QNP51, 254900425JAG3QVRMM28
© www.soinside.com 2019 - 2024. All rights reserved.