大熊猫适用于如预期各列的作品,而不是整个数据帧

大熊猫适用于如预期各列的作品,而不是整个数据帧

问题描述:

我有一个数据帧,看起来是这样的:大熊猫适用于如预期各列的作品,而不是整个数据帧

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 
+0

你知道,如果''dtype'的np.NaN'是'np.float'? 'statefp'列中有一些'NaN',它抛出这个错误:'不能将NA转换为整数','indexfoundation statefp' – LMc

+0

@LMc是的,np.Nan被认为是np.float。 'type(np.nan)== np.float'返回True –