2016-11-29 91 views

回答

7

考虑df

df = pd.DataFrame(np.random.rand(10, 10) * 10) 

enter image description here

使用np.r_得到slc

slc = np.r_[0:4, 6] 
df[slc] = df[slc].astype(int) 
df 

或传递的类型与键的字典列名

df.astype({c: int for c in slc}) 

​​3210

+0

我得到一个警告,当我尝试使用任何应用或astype。 '__main __:4:SettingWithCopyWarning:' '试图在来自DataFrame的切片的副本上设置一个值。 尝试使用.loc [row_indexer,col_indexer] = value instead' –

+1

这是一个完全独立的问题。它与创建'mapping2'的因素有关,因为它是另一个数据框的'视图'。在你分配给各个列之前,你可以通过执行'mapping2 = mapping2.copy()'来解决这个问题。 'mapping2 = mapping2.copy()'将使自己成为一个新的新数据框,不附加到任何其他数据框,您可以自由地分配给它的列没有任何警告。 – piRSquared

+0

谢谢@pirSquared。有用。另外,如果你可以解释为什么'df [slc] .astype(int)'不能在'df [slc] = df [slc] .astype(int)'工作的地方工作,那就太好了。 –

相关问题