DataFrame.loc создает список объектов вместо одного значения - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь, чтобы мой фрейм данных вставил определенное значение в столбец.Желаемым значением будет «Return Weather», где «City» и «Day» соответствуют указанным значениям.Вот игрушечный пример:

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 голосов
/ 15 сентября 2018

С данным набором индексов мы можем напрямую выбирать строки для различных значений «last_name», используя .loc [] - либо по отдельности, либо в виде кратных, для вашего случая ..

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...