我的数据框有很多列。执行时我遇到了错误,如
Can only use .str accessor with string values, which use np.object_ dtype in pandas
我认为这是因为我的列在该特定场合只有Nan值而且.str在代码上失败
df1['Merchant_old']=df1['Merchant_old'].str.lower().str.strip()
我不应该如何使用isna()仅在整个列不为空时才运行上述步骤。
答案 0 :(得分:2)
我认为您df.col
的类型是np.float
。您可以使用str
与df.col.astype(np.object_).str
一起使用。这将使np.NaN
保留在最终输出中。
答案 1 :(得分:1)
您可以在此处使用isnull
和all
df=pd.DataFrame({'A':['A',np.nan,'B'],'B':[np.nan,np.nan,np.nan]})
s=df.isnull().all()
df.loc[:,s[~s].index]=df.loc[:,s[~s].index].apply(lambda x : x.str.lower().str.strip())
df
A B
0 a NaN
1 NaN NaN
2 b NaN