大熊猫适用于如预期各列的作品,而不是整个数据帧
问题描述:
我有一个数据帧,看起来是这样的:大熊猫适用于如预期各列的作品,而不是整个数据帧
pd.DataFrame({'state':['AL','AL'],'statefp':[1.0,1.0]})
state statefp
0 AL 1.0
1 AL 1.0
我想将整个数据框进式STR和使用.apply
方法是。我想要做的是如果该项目的类型为浮点数,我想将其存储为一个字符串整数,如果它已经是一个字符串我想小写它。我已经试过这样:
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
。
答
尝试使用D型,而不是:
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
你知道,如果''dtype'的np.NaN'是'np.float'? 'statefp'列中有一些'NaN',它抛出这个错误:'不能将NA转换为整数','indexfoundation statefp' – LMc
@LMc是的,np.Nan被认为是np.float。 'type(np.nan)== np.float'返回True –