我有一个包含许多float64、int8和object数据类型列/系列的数据帧。我想要应用一组基于数据类型的函数,但要就地应用。我无法做到这一点。我可以根据data_type分离出列,然后根据索引将它们连接起来。但我想知道是否有一种方法可以做到这一点而不是分离。
df1 = pd.DataFrame(np.random.randn(3, 3))
df2 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']},
index=[0, 1, 2] )
df=pd.concat ([df1,df2])
df.dtypes
# 0 float64
# 1 float64
# 2 float64
# A object
# B object
# dtype: objectdf.select_dtypes(include = ["float64"]).apply(lambda x: x*x).dropna()
给我一个新的数据框。
df.select_dtypes(include = ["float64"]) = df.select_dtypes(include = ["float64"]).apply(lambda x: x*x)
SyntaxError: can't assign to function call
可笑的尝试尝试和做它的地方。我意识到,当两边有不同的序列时,我要求赋值将'lhs‘自动映射到'rhs’。
有没有一种方法可以就地完成这个操作。
发布于 2018-08-02 09:53:28
我认为应该是'float64‘而不是'int64’
df.loc[:,df.select_dtypes(include = ["float64"]).columns] = df.select_dtypes(include = ["float64"]).apply(lambda x: x*x)
df
Out[117]:
0 1 2 A B
0 0.232743 0.107359 1.512470 NaN NaN
1 0.831272 1.935141 0.010660 NaN NaN
2 0.017718 0.078454 0.056315 NaN NaN
0 NaN NaN NaN A0 B0
1 NaN NaN NaN A1 B1
2 NaN NaN NaN A2 B2更多信息update
df.update(df.select_dtypes(include = ["float64"]).apply(lambda x: x*x))
df
Out[139]:
0 1 2 A B
0 0.074513 0.679018 0.070407 NaN NaN
1 0.748732 0.004991 0.591979 NaN NaN
2 0.006658 1.934269 0.106463 NaN NaN
0 NaN NaN NaN A0 B0
1 NaN NaN NaN A1 B1
2 NaN NaN NaN A2 B2https://stackoverflow.com/questions/51644434
复制相似问题