我有一个数据框,其中包含许多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: object
df.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”的任务。
有没有办法执行此操作?
答案 0 :(得分:2)
我认为应该是“ 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 B2