У меня есть фрейм данных со столбцами area
и price
, и я создал новый столбец пустых списков с именем compList
.
. Я использую для l oop заполнение * 1006. * для каждой строки с ценами любых других домов с таким же значением area
.
Я ищу результат для data['compList']
, равным []
для всех area
значений, кроме первый и последний, которые оба имеют area
1500, где значения compList
должны иметь одно значение, 31000
и 30000
соответственно. Вместо этого я получаю [30000, 31000]
за каждое значение compList
.
Что не так с моим кодом? 2 часа ломал голову, пытаясь понять это. Ваша помощь будет принята с благодарностью.
import pandas as pd
import numpy as np
import collections
reqArea = 1200
area = [1500, 500, 1000, 2000, 2500, 1500]
price = [30000, 10000, 20000, 40000, 50000, 31000]
data = pd.DataFrame(list(zip(area,price)), columns = ['area','price'])
data['compList'] = [[]]*len(data['area'])
На этом этапе мой фрейм данных выглядит так:
area price compList
0 1500 30000 []
1 500 10000 []
2 1000 20000 []
3 2000 40000 []
4 2500 50000 []
5 1500 31000 []
Затем я его обрабатываю.
for i in range(len(data['area'])):
sameArea = []
sameArea = np.where(data['area'] == data['area'][i])[0]
if len(sameArea)>1:
for j in range(len(sameArea)):
if sameArea[j] != i:
data['compList'][i].append(data['price'][sameArea[j]])
else:
pass
В конце мой фрейм данных выглядит так:
area price compList
0 1500 30000 [31000, 30000]
1 500 10000 [31000, 30000]
2 1000 20000 [31000, 30000]
3 2000 40000 [31000, 30000]
4 2500 50000 [31000, 30000]
5 1500 31000 [31000, 30000]