首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择具有所需data_type的pandas系列并就地应用函数的方法

选择具有所需data_type的pandas系列并就地应用函数的方法
EN

Stack Overflow用户
提问于 2018-08-02 09:49:52
回答 1查看 365关注 0票数 2

我有一个包含许多float64int8object数据类型列/系列的数据帧。我想要应用一组基于数据类型的函数,但要就地应用。我无法做到这一点。我可以根据data_type分离出列,然后根据索引将它们连接起来。但我想知道是否有一种方法可以做到这一点而不是分离。

代码语言:javascript
复制
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’。

有没有一种方法可以就地完成这个操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-02 09:53:28

我认为应该是'float64‘而不是'int64’

代码语言:javascript
复制
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

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51644434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档