Python 将包含列表的数据行转换为NaN值

Python 将包含列表的数据行转换为NaN值,python,pandas,data-structures,Python,Pandas,Data Structures,我有这样一个数据帧: abc 约翰45[1,0] 卡尔3[1,2,1] 弗雷德4[-1] 如上文“C”列中所示,一些行包含列表。我的目标是将它们转换为NaN值。我希望输出如下所示: abc 约翰45南 卡尔3南 弗雷德4[-1] 如何执行此操作?与以下创建的布尔掩码一起使用: 或: 如果要将一个项目列表转换为标量: df.C = np.where(df.C.str.len() == 1, df.C.str[0], np.nan) print (df) A B C 0

我有这样一个数据帧:

abc
约翰45[1,0]
卡尔3[1,2,1]
弗雷德4[-1]
如上文“C”列中所示,一些行包含列表。我的目标是将它们转换为NaN值。我希望输出如下所示:

abc
约翰45南
卡尔3南
弗雷德4[-1]
如何执行此操作?

与以下创建的布尔掩码一起使用:

或:


如果要将一个项目列表转换为标量:

df.C = np.where(df.C.str.len() == 1,  df.C.str[0], np.nan)
print (df)
      A   B    C
0  John  45  NaN
1  Carl   3  NaN
2  Fred   4 -1.0
与以下创建的布尔掩码一起使用:

或:


如果要将一个项目列表转换为标量:

df.C = np.where(df.C.str.len() == 1,  df.C.str[0], np.nan)
print (df)
      A   B    C
0  John  45  NaN
1  Carl   3  NaN
2  Fred   4 -1.0
您还可以使用:

df['C'][df['C'].apply(len)>1] = np.nan
结果:

      A     B    C
0   John    45  NaN
1   Carl    3   NaN
2   Fred    4   [-1]
您还可以使用:

df['C'][df['C'].apply(len)>1] = np.nan
结果:

      A     B    C
0   John    45  NaN
1   Carl    3   NaN
2   Fred    4   [-1]

我会使用
loc

df.loc[df.C.str.len() > 1, "C"] = np.nan

我会使用
loc

df.loc[df.C.str.len() > 1, "C"] = np.nan

是否要替换长度大于1的列表?是否要替换长度大于1的列表?谢谢!我的下一个问题是完全删除列表。我的最后一个问题是,如果有像这样的值,
[]
@jezraelThanks!我的下一个问题是完全删除列表。我的最后一个问题是,如果有这样的值,
[]
@jezrael会怎么样