2016-04-08 4 views
2

Это скорее новый вопрос python для новичков. У меня есть панд dataframe tmp_df, который я нарезать с использованием 3 даты-времени входы следующим образом, чтобы извлечь различные временные диапазоны данных:Назначение переменной python с использованием временных интервалов

tmp_daily_df = tmp_df.loc[idx[daily[1]:daily[2]],:] 
tmp_weekly_df = tmp_df.loc[idx[weekly[1]: weekly[2]],:] 
tmp_monthly_df = tmp_df.loc[idx[monthly[1]: monthly[2]],:] 

Затем я передать полученные 3 dataframes к функции, называемой compute_stats(), которая вычисляет различные статистические данные и выполняет некоторые манипуляции с входным фреймом данных (то есть tmp_daily_df). Одним из таких манипуляций является добавление нескольких новых столбцов tmp_daily_df и т.д.

final_daily_df = compute_stats(tmp_daily_df, 'M','').reset_index(drop=True) 
final_weekly_df = compute_stats(tmp_weekly_df, 'M','').reset_index(drop=True) 
final_monthly_df = compute_stats(tmp_monthly_df, 'M','').reset_index(drop=True) 

Мой вопрос, так как питон присваивание переменной работает больше как связь, чем копия, я задаюсь вопросом, будет 2-го и 3-го обращения к compute_stats быть повреждены манипуляции to tmp_daily_df, который является временным фрагментом tmp_df, на который ссылаются tmp_weekly_df и tmp_monthly_df.

ответ

1

нарезка список создает копию, другими словами:

new_list = l[:] 

эквивалентно:

new_list = list(l) 

DataFrames работают немного по-другому, хотя. Взгляните на этот пост: dataframes copies vs views

DataFrame.loc возвращает вид при использовании скалярной индексации/нарезка.

В соответствии с этим:

Всякий раз, когда массив меток или булева вектора участвуют в операции индексации, то результат будет копией. С однократной индексацией и нарезкой ярлыка/скаляра, например. df.ix [3: 6] или df.ix [:, 'A'], будет возвращено представление.

вы получите представление, если вы не используете массив меток или булев вектор. Использование метода копирования даст вам желаемый результат.

+0

Это то же самое, что и для резки кадра данных? – codingknob

+0

Извините, я пропустил этот момент. Ответ отредактирован соответствующим образом. –

Смежные вопросы