我有一个数据框,其中一列包含一个字符串,该字符串包含逗号分隔的单词。

>>> df['column1']
# ....
996                  str1, str2, str3
997                  str4, str5, str7
998                  str8, str9, str10
# ...........

我需要将该列的内容视为字符串数组,以便执行以下操作:
 [
  # .....
  & (df['column1'].isin('str2')) # should return the row #996
  # ....
 ]

我试过但没成功,当然:
 [
  # .....
  & (df['column1'].split(',').isin('str2'))
  # ....
 ]

我该怎么做?或者更确切地说,如何在筛选之前使用方法(lambda)修改列的内容?
更新1:
这是我代码的一部分:
for x in pd.read_csv.....
      df_item = x

      if filter1:
        df_item = df_item[(df_item['column1'] == filter1)]

      if filter2:
        df_item = df_item[(df_item['column2'].isin(subjects))]

      # .....

如何将df['column2'].apply(lambda x: 'str2' in x.split(','))应用于
  if filter2:
    df_item = df_item[(df_item['column2'].isin(subjects))]

最佳答案

isin检查序列中的值是否在iterable中(在您的情况下)。而不是'str2'是否包含在序列值中。
如果序列包含字符串,则获取所需内容的方法将使用str2检查字符串是否包含.str.contains()。示例-

df['column1'].str.contains('str2')

如果必须拆分内容,请使用str2(即','可以是任何其他字符串的子字符串)。您可以使用str2。示例-
df['column1'].apply(lambda x: 'str2' in x.split(','))

要应用此功能,只需使用此功能筛选数据帧。示例-
if <somefilter>:
    df_item = df_item[df_item['column2'].apply(lambda x: 'str2' in x.split(','))]

关于python - 过滤 Pandas -如何应用自定义方法(lambda)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32968747/

10-12 16:52