选择具有所需data_type的熊猫系列并在适当位置应用功能的方法

时间:2018-08-02 01:49:52

标签: python python-3.x pandas

我有一个数据框,其中包含许多float64int8object数据类型列/系列。我想根据数据类型应用一组功能,但是要到位。我做不到。我可以根据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”的任务。

有没有办法执行此操作?

1 个答案:

答案 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