2017-02-20 23 views
0

Я хотел бы, чтобы скопировать определенные значения столбцов из определенной строки в моей dataframe df другого dataframe называется bestdfПринимая некоторые значения столбцов из одной строки в панде Dataframe и добавить их в другую dataframe

Здесь я создаю пустой dataframe (так называемый bestdf):

new_columns = ['DATE', 'PRICE1', 'PRICE2'] 
bestdf = pd.DataFrame(columns = new_columns) 
bestdf.set_index(['DATE']) 

.I've расположен определенную строку из df и назначены строки к переменной last_time:

last_time = df.iloc[-1] 
print last_time 

дает мне

    DATETIME  PRC 
2016-10-03 00:07:39.295000 335.82 

Затем я хочу взять 2016-10-03 из DATETIME колонны и положить, что в DATE колонке моего другого dataframe (bestdf). Я также хочу взять PRC и поместить его в столбец PRICE1 моей пустой информационной рамки. Я хочу bestdf выглядеть следующим образом:

     DATE PRICE1 PRICE2 
       2016-10-03 335.82 

Вот что у меня до сих пор?

sample_date = str(last_time).split() 
best_price = sample_date[2] 
sample_date = sample_date[0] 

bestdf['DATE'] = sample_date 
bestdf['PRICE1'] = best_price 

Это, похоже, не работает. FYI Я также хочу поставить это в цикл (где last_time будет изменен и каждый раз, когда новые значения будут записаны в новую строку). Я просто пытаюсь получить правильную функциональность.

Пожалуйста, помогите!

Благодаря

+1

Не могли бы вы создать минимальный пример и показать нужный результат ?! – Cleb

+0

Вы хотите создать новый dataframe из определенных строк и столбцов другого фрейма данных? –

+0

@VikashSingh это то, что я хочу сделать да (я отредактировал выше, чтобы сделать его более информативным). – nrs90

ответ

1

Есть несколько способов сделать то, что вы хотите сделать: Также вы можете разбить вашу проблему вниз на несколько частей. Таким образом, вы сможете применить различные шаги для их решения.

Вот пример:

import pandas as pd 
from datetime import datetime 

data = [{'DATETIME': '2016-10-03 00:07:39.295000', 'PRC': 335.29}, 
     {'DATETIME': '2016-10-03 00:07:39.295000', 'PRC': 33.9}, 
     {'DATETIME': '2016-10-03 00:07:39.295000', 'PRC': 10.9}] 

df = pd.DataFrame.from_dict(data, orient='columns') 

df 

выход:

DATETIME     PRC 
0 2016-10-03 00:07:39.295000 335.29 
1 2016-10-03 00:07:39.295000 33.90 
2 2016-10-03 00:07:39.295000 10.90 

код продолжить:

bestdf = df[df['PRC'] > 15].copy() 
# we filter data from original df and make a copy 
bestdf.columns = ['DATE','PRICE1'] 
# we change columns as we need 
bestdf['PRICE2'] = None 
bestdf 

выход:

DATE      PRICE1 PRICE2 
0 2016-10-03 00:07:39.295000 335.29 None 
1 2016-10-03 00:07:39.295000 33.90 None 

код продолжить:

bestdf['DATE'] = bestdf['DATE'].apply(lambda value: value.split(' ')[0]) 
# we change column format based on how we need it to be 
bestdf 

выход:

DATE PRICE1 PRICE2 
0 2016-10-03 335.29 None 
1 2016-10-03 33.90 None 

Мы также можем сделать то же самое с объектами даты и времени тоже. Не обязательно должна быть строка.