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

但是我得到:

错误:使用可迭代对象进行设置时,必须具有相等的 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建议尝试特定索引。

results = df.loc[(df['City'] == rtn_city) & (df['Day'] == day), 'Weather'].values[0]

最新更新