Как мне извлечь определенные c значений из DataFrame и добавить их в список? - PullRequest
0 голосов
/ 03 августа 2020

Пример фрейма данных:

      id             date       price   
93   6021501535   2014-07-25    430000      
93   6021501535   2014-12-23    700000    
313  4139480200   2014-06-18    1384000   
313  4139480200   2014-12-09    1400000   

first_list = [] second_list = []

Мне нужно добавить первую цену, которая соответствует указанному c ID, в первый список и вторая цена для того же идентификатора во втором списке.

Пример: first_list = [430,000, 1,384,000] second_list = [700,000, 1,400,000]

После чего я построю график значения из обоих списков на линейном графике для сравнения разницы в цене между первым и вторым списками.

Я пробовал делать это с groupby и lo c, и я продолжал сталкиваться с ошибками. Затем я попытался перебрать каждую строку, используя простой для l oop, но столкнулся с другими проблемами ...

Я был бы признателен за помощь.

1 Ответ

0 голосов
/ 03 августа 2020

Исходя из вашего вопроса, я думаю, что нет необходимости сохранять их в списке, потому что вы также можете хранить их где-нибудь еще (например, в другом DataFrame) и строить их. Приведенные ниже функции должны помочь с заполнением там, где вы хотите хранить свои данные.

def date(your_id):
    first_date = df.loc[(df['id']==your_id)].iloc[0,1]
    second_date = df.loc[(df['id']==your_id)].iloc[1,1]
    return first_date, second_date

def price(your_id):
    first_date, second_date = date(your_id)
    price_first_date = df.loc[(df['id']==6021501535) & (df['date']==first_date)].iloc[0,2]
    price_second_date = df.loc[(df['id']==6021501535) & (df['date']==second_date)].iloc[0,2]
    return price_first_date, price_second_date

price_first_date, price_second_date = price(6021501535) 

Если сейчас, например, вы хотите сохранить свои данные в новом df, вы можете сделать что-то вроде:

selected_ids = [6021501535, 4139480200]
new_df = pd.DataFrame(index=np.arange(1,len(selected_ids)+1), columns=['price_first_date', 'price_second_date'])

for i in range(len(selected_ids)):
     your_id = selected_ids[i]
     new_df.iloc[i, 0], new_df.iloc[i, 1] = price(your_id)

new_df тогда содержит все «цены на первую дату» в первом столбце и все «цены на вторые даты» во втором столбце. Сюжет должен получиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...