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会怎么样