python - 修改数据框中的值
问题描述
我正在尝试遍历数据框的行并在迭代时修改一些值。数据框如下所示:
Time WindSpeed SkyCover Temp DewPt RH Press Precip
3 21:53 11 Light Snow -1.7 -6.1 72% 1003.1 0
4 20:53 N 11 Mostly Cloudy -2.2 -6.1 75% 1002.8 0
5 19:53 Calm Mostly Cloudy -2.8 -6.7 75% 1002.7 0
6 18:53 Calm Overcast -1.7 -6.7 69% 1002.4 0
7 17:53 N 5 Overcast -1.7 -7.2 66% 1002.6 0
8 16:53 NE 8 Overcast -1.1 -7.2 64% 1002.5 0
…
我编写了以下循环来遍历数据框并更改风速列。当风速大于 1 KPH 时,此列是一个向量,当低于该阈值时,此列是一个文本值“Calm”。我希望这个循环逐行查看列值,如果它很平静,请将“1”放在它的位置,但如果它大于 1,则删除方向并仅保留标量值。
for i in df.index:
if df.at[i, 2] == 'Calm':
df.at[i, 2] = 1
else:
df.at[i, 2] = re.findall('[0-9]+', df.at[i, 2])[0]
正如您在上面的数据框中看到的那样,此循环已对第一行数据起作用,但不会继续超过该数据。我没有收到任何关于它为什么在第一行之后停止的错误消息。
解决方案
使用apply
:
df.WindSpeed = df.WindSpeed.apply(lambda x: 1 if x == 'Calm' else re.findall(r'[0-9]+',x)[0])
推荐阅读
- c++ - 使用 GLUT 用键停止动画?
- kubernetes - 如何按日期列出 Helm Chart 版本?
- php - 在 Wordpress 中输出用户注册日期时获取错误的时区
- excel - Excel VBA 宏 64K 限制
- artifactory - 哪些服务器需要企业许可证才能进行基于事件的拉式复制?
- c - 使用 malloc/calloc 初始化 char *tab[]
- ios - 在 Swift 4 中获取 URL 图像的分辨率
- python - Python 2.7 - 没有名为 expat 的模块;改用 SimpleXMLTreeBuilder - 源代码安装
- laravel - 使用 Pusher 的 Laravel 广播不使用 Vue 监听
- laravel - 如何从队列中执行作业?