python - DataFrame.loc 生成列表对象而不是单个值
问题描述
我试图让我的数据框将特定值插入列中。所需的值将是“返回天气”,其中“城市”和“日期”都与指定值匹配。这是一个玩具示例:
index City Weather Day Return City Return Weather
0 New York 65 3 Baltimore
1 Atlanta 77 6 Chicago
2 Baltimore 68 9 Orlando
3 Chicago 62 13 Boston
4 Boston 57 14 Atlanta
5 Orlando 88 19 New York
6 Baltimore 59 3 Chicago
7 Chicago 66 6 Atlanta
这是我正在尝试的代码:
for i in df.index:
day = df.loc[i, 'Day']
rtn_city = df.loc[i, 'Return City']
df.loc[i, 'Return Weather'] = df.loc[(df['City'] == rtn_city) & (df['Day'] == day), 'Weather'].values
但是我得到:
ValueError:使用可迭代设置时必须具有相等的 len 键和值
如果我将最后一行设置为打印...
results = df.loc[(df['City'] == rtn_city) & (df['Day'] == day), 'Temp'].values
print(results)
我得到了正确的答案,但它们似乎是列表:
[59]
[66]
这闻起来像我的问题。有什么想法吗?
解决方案
使用给定的索引集,您可以使用 .loc[] 直接选择不同“last_name”值的行——根据您的情况,可以单独选择,也可以选择多个。
results = df.loc[[(df['City'] == rtn_city) & (df['Day'] == day), 'Weather']].values
或者按照@Sai Kumar 的建议尝试特定索引..
results = df.loc[(df['City'] == rtn_city) & (df['Day'] == day), 'Weather'].values[0]
推荐阅读
- r - 在 Wilcoxon Rank 之后在 R 中使用 Benjamini-Hochberg 错误发现率时出错
- macos - “TestCafe 浏览器工具”想要访问“Google Chrome”。Mac 安全弹出问题。Mac中是否有始终允许的设置?
- javascript - 如何在 React Web 应用程序(非原生)中拍照
- python - 使用 Python 烧瓶为 IOT 应用程序创建通知系统
- javascript - 强制网页加载到页面顶部
- php - 如何通过表中的 id(1-3) 等特定 id 范围从数据库中获取数据?
- swift - 在 Swift 4 中退出 Firebase
- c - 将 16 位正数转换为二进制的程序
- reactjs - 只是为了一劳永逸,您究竟如何更新工作存储库中的 npm 包?
- sql - 如何使用 JPQL 查询存储为 BINARY(16) 的 UUID