首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在熊猫数据栏上使用数学包(例如math.radians、math.tan)

在熊猫数据栏上使用数学包(例如math.radians、math.tan)
EN

Stack Overflow用户
提问于 2019-07-09 23:44:11
回答 2查看 1.8K关注 0票数 2

示例df:

代码语言:javascript
复制
data = pd.DataFrame({'col1': ['1.55', '2.22', '2.22', '3.33'],
                  'col2': ['10', '15', '20', '30']})

我想在col1上添加一个使用数学函数的新列。

代码语言:javascript
复制
data['new'] = math.radians(data['col1'])

代码语言:javascript
复制
data['new'] = math.tan(data['col1'])

这给了我错误TypeError: cannot convert the series to <class 'float'>。我已经使用col1data['col1'] = data['col1'].astype(float64)转换为浮动,所以我认为错误肯定是因为data['new']不能转换为浮点数。

我如何解决这个问题,并使用math从旧列创建新的数据格式列?如果能解释一下为什么math没有很好地处理数据格式,那就太好了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-10 00:05:42

有两种方法可以解决您的问题,因为您希望将标量值传递给您的数学函数:

方法1使用.astype.apply

代码语言:javascript
复制
data['new'] = data['col1'].astype(float).apply(math.radians)

   col1 col2       new
0  1.55   10  0.027053
1  2.22   15  0.038746
2  2.22   20  0.038746
3  3.33   30  0.058119

方法2(更快的方法)是使用numpy函数

numpy以数组作为输入。

代码语言:javascript
复制
data['new2'] = np.tan(data['col1'].astype(float))

   col1 col2       new       new2
0  1.55   10  0.027053  48.078482
1  2.22   15  0.038746  -1.317612
2  2.22   20  0.038746  -1.317612
3  3.33   30  0.058119   0.190669
票数 3
EN

Stack Overflow用户

发布于 2019-07-09 23:57:53

首先,不要把你的数字数据帧元素括在“引号”中。

代码语言:javascript
复制
data = pd.DataFrame({'col1': [1.55, 2.22, 2.22, 3.33],
                     'col2': [10, 15, 20, 30]})

如果数据就是这样提供给您的,那么使用.astype函数。

代码语言:javascript
复制
data['col1'] = data['col1'].astype(float)

在数据帧上执行操作时,请使用apply()

代码语言:javascript
复制
data['new'] = data['col1'].apply(math.tan)

当然,通过执行以下代码可以同时完成所有这些工作:

代码语言:javascript
复制
data['new'] = data['col1'].astype(float).apply(math.tan)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56961724

复制
相关文章

相似问题

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