python - 选择具有所需数据类型的熊猫系列并就地应用功能的方法
问题描述
我有一个包含许多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”。
有没有办法就地执行此操作。
解决方案
我认为应该是“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
推荐阅读
- timestamp - 将传入的时区 {IST/PST/GMT 等..} TS 转换为 teradata 中的 CST 时区 TS?
- jquery - 具有活动/删除类的函数 setInterval next()
- javascript - 如何有效地将 JavaScript 对象的值分离到 Array 中?
- python - 从字符串末尾拆分字符串中的 3 个空格分隔值?
- c# - 如何一次将相同的操作分配给多个按钮?
- regex - CALS 表模型中列宽单位一致的 xpath 断言
- flutter - 错误:这需要启用“不可为空”实验
- python - 在 Python 中更改函数名称
- ios - 如何覆盖目标的字符串本地化文件中的字符串
- scala - WebSocket 缺少用于自定义数据类型的隐式消息流转换器 2.6