Python中文
首页
教程
问答
标签
搜索
登录
注册
为什么这个函数在pandas数据帧上出错后不“接受”?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个带有时间戳的温度和风速值的数据帧,以及一个将这些值转换为“风寒”的函数。我使用iterrows在每一行上运行该函数,并希望通过一个漂亮的“风寒”列得到一个数据框。在</p> <p>然而,虽然它看起来像是在工作,而且实际上至少“工作”过一次,但我似乎不能始终如一地复制它。总的来说,我觉得这是我在数据帧结构方面缺少的东西,但我希望有人能帮上忙。在</p> <pre><code>In [28]: bigdf.head() Out[28]: Day Temperature Wind Speed Year 2003-03-01 06:00:00-05:00 1 30.27 5.27 2003 2003-03-01 07:00:00-05:00 1 30.21 4.83 2003 2003-03-01 08:00:00-05:00 1 31.81 6.09 2003 2003-03-01 09:00:00-05:00 1 34.04 6.61 2003 2003-03-01 10:00:00-05:00 1 35.31 6.97 2003 </code></pre> <p>所以我在<code>bigdf</code>中添加了一个'windchill'列,并用<code>NaN</code>预填充。在</p> ^{pr2}$ <p>然后我尝试遍历这些行,以添加实际的风寒。在</p> <pre><code>In [30]: for row_index, row in bigdf[:5].iterrows(): ...: row['Wind Chill'] = windchill(row['Temperature'], row['Wind Speed']) ...: print row['Wind Chill'] ...: 24.7945889994 25.1365267133 25.934114012 28.2194307516 29.5051046953 </code></pre> <p>正如您所说,新值<em>显示为</em>将应用于“风寒”列。以下是<code>windchill</code>函数,以防有帮助:</p> <pre><code>def windchill(temp, wind): if temp>50 or wind<=3: return temp else: return 35.74 + 0.6215*temp - 35.75*wind**0.16 + 0.4275*temp*wind**0.16 </code></pre> <p>但是,当我再次查看数据帧时,NaN仍然存在:</p> <pre><code>In [31]: bigdf.head() Out[31]: Day Temperature Wind Speed Year Wind Chill 2003-03-01 06:00:00-05:00 1 30.27 5.27 2003 NaN 2003-03-01 07:00:00-05:00 1 30.21 4.83 2003 NaN 2003-03-01 08:00:00-05:00 1 31.81 6.09 2003 NaN 2003-03-01 09:00:00-05:00 1 34.04 6.61 2003 NaN 2003-03-01 10:00:00-05:00 1 35.31 6.97 2003 NaN </code></pre> <p>更奇怪的是,<strong>已经</strong>起过一两次作用了,我不知道我做了什么不同。在</p> <p>我必须承认,我对pandas的内部工作原理不是特别熟悉,而且对索引等也很困惑,所以我觉得我可能在这里遗漏了一些非常基本的东西(或者很难做到这一点)。在</p> <p>谢谢!在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>试试看:</p> <pre><code>bigdf['Wind Chill'] = bigdf.apply(lambda x: windchill(x['Temperature'], x['Wind Speed']), axis=1) </code></pre> <p>使用简单的<code>windchill</code>函数一次性获取整个数据帧。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
8 回答
无法使用Django\u mssql\u后端迁移到外部hos
2 回答
无法使用Django&Python3.4连接到MySql
2 回答
无法使用Django+nginx上载媒体文件
5 回答
无法使用Django1.6导入名称模式
1 回答
无法使用Django1.7和mongodb登录管理站点
3 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
1 回答
无法使用Djangockedi验证CBV中的字段
10 回答
无法使用Djangocketditor上载图像(错误400)
5 回答
无法使用Djangocron进行函数调用
10 回答
无法使用Djangofiler djang上载文件
2 回答
无法使用Djangokronos
4 回答
无法使用Djangomssql provid
8 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
7 回答
无法使用Djangomssq迁移Django数据库
2 回答
无法使用Djangonox创建用户
5 回答
无法使用Djangopyodb从Django查询SQL Server
6 回答
无法使用Djangopython3ldap连接到ldap
8 回答
无法使用Djangoredis连接到redis
1 回答
无法使用Django中的FK创建新表
9 回答