我正在尝试从 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))
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