pye*_*biz 2 python python-3.x pandas
我有一个包含许多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
Run Code Online (Sandbox Code Playgroud)
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”。
有没有办法就地执行此操作。
我认为应该是“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
Run Code Online (Sandbox Code Playgroud)
更多信息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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
615 次 |
| 最近记录: |