根据条件(包括字符串)返回列表的子集元素



假设我正在处理这个数据帧:

tbody> <<tr>
元素列表
(123年,1234年,美国广播公司(abc) - 123, abc - 1234]
[abc - 321]

尝试:

mask = pd.notna(df["Element List"])
df[["abc", "Others"]] = df.loc[mask, "Element List"].apply(
lambda x: pd.Series(
{
"abc": [v for v in x if v.startswith("abc")] or np.nan,
"Others": [v for v in x if not v.startswith("abc")] or np.nan,
}
)
)
print(df)

打印:

Element List                  abc       Others
0  [123, 1234, abc-123, abc-1234]  [abc-123, abc-1234]  [123, 1234]
1                       [abc-321]            [abc-321]          NaN
2                             NaN                  NaN          NaN