我有一个看起来像这样的数据帧:
pd.DataFrame({'state':['AL','AL'],'statefp':[1.0,1.0]})
state statefp
0 AL 1.0
1 AL 1.0
我想将整个数据帧转换为 str 类型,并且正在使用 .apply
方法。我想做的是,如果项目是 float 类型,我想将其存储为字符串整数,如果它已经是一个字符串,我想将其小写。我试过这个:
df.apply(lambda x: '{:.0f}'.format(x) if isinstance(x,float) else x.astype(str).str.lower())
它输出这个(不是我想要的,因为statefp
存储为字符串浮点数):
state statefp
0 al 1.0
1 al 1.0
但是,当我仅在该列上使用相同的应用程序时,它可以正常工作:
>>>df.statefp.apply(lambda x: '{:.0f}'.format(x) if isinstance(x,float) else x.astype(str).str.lower())
0 1
1 1
我是否遗漏了.apply
如何处理整个数据帧的内容?我也尝试设置axis='columns'
.apply
的参数,但这也没有用。
另外,我愿意尝试其他代码,而不仅仅是.apply
。
尝试改用dtype:
df.apply(lambda x: x.astype(int).astype(str) if x.dtype==np.float else x.astype(str).str.lower())
输出:
state statefp
0 al 1
1 al 1
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 2 columns):
state 2 non-null object
statefp 2 non-null object
dtypes: int32(1), object(1)
memory usage: 104.0+ bytes