pandas - 在熊猫数据框中用 nan 替换任何字符串
问题描述
我是熊猫和数据框概念的新手。由于我的数据格式(excel-sheets,第一行是我的数据的名称,第二行是单位),在数据框中处理它有点棘手。任务是从现有列中计算新数据,例如df.['c'] = df['a']**2 + df.['b']
我得到:TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
这确实有效,但对我的手和眼睛来说是痛苦的:
df.['c'] = df['a']
df.['c'] = df['a'].tail(len(df.['a']-1))**2 + df.['b'].tail(len(df.['b'])-1)
df.loc[0,'c'] = 'unit for c'
有什么方法可以更快或更少打字吗?谢谢已经schamonn
解决方案
让我们看看这篇文章中首先提到的错误。
类型错误:** 或 pow() 不支持的操作数类型:'str' 和 'int'
这个错误是什么,你试图把它串起来,我们可以使用下面的例子来复制这个错误:
df = pd.DataFrame({'a':['1','2','3'],'b':[4,5,6]})
df['a']**2
输出堆栈跟踪的最后一行:
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
如果您的所有 a 列都是数字表示,则对此的简单解决方案,然后使用pd.to_numeric
:
pd.to_numeric(df['a'])**2
输出:
0 1
1 4
2 9
Name: a, dtype: int64
在 a 列中也有非数字字符串?
用作errors = 'coerce'
参数pd.to_numeric
df = pd.DataFrame({'a':['a','1','2','3'],'b':[4,5,6,7]})
利用:
pd.to_numeric(df['a'], errors='coerce')**2
输出:
0 NaN
1 1.0
2 4.0
3 9.0
Name: a, dtype: float64
推荐阅读
- ibm-midrange - IBM CDC AS400 带加密
- mysql - 使用 NodeJs 和 ReactJs 将数据发布到 Mysql 中的 ERR_CONNECTION_REFUSED
- r - 删除不超过一列的行
- django - 根据特定请求强制使用 TemporaryFileUploadHandler
- html - 什么决定了 Firefox 中滚动条是否有颜色?
- docker - 当图像已经可用时,无法在本地找到图像“jmeter:latest”
- python - 流程完成后如何更新切换按钮的状态?
- axapta - Axapta V4 上的数字序列事件规则问题
- python - Scrapy FilesPipeline 避免在不同的爬取运行中重新下载文件(谷歌云存储)
- python - 在python中重塑数据框/多个'n'图