DataFrame.loc产生列表对象而不是单个值

时间:2018-09-15 12:45:03

标签: python pandas

我正在尝试让我的数据框将特定值插入列中。所需的值将是“返回天气”,其中“城市”和“日”均与指定值匹配。这是一个玩具示例:

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]

闻起来像我的问题。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在设置了给定的索引的情况下,我们可以使用.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]