Вот проблема, которую я тянуть CSV в кадр данных панд, который выглядит так:условно вставки строк в панде DataFrame
Identity Date value1 value2 Random
Apple 1/1/2005 10 10 Orange
Apple 12/1/2005 1 1 Orange
мне нужно затем вызвать Идентичность Apple, найти его минимальный и максимальную дату и вставить строки, т.е. месяцев для того, чтобы интерполировать между двумя точками, так что конечный результат становится
Identity Date value1 value2 Random
Apple 1/1/2005 10 10 Orange
Apple 2/1/2005 0 0 Orange
Apple 3/1/2005 0 0 Orange
. . . . .
. . . . .
. . . . .
Apple 12/1/2005 1 1 Orange
проблема заключается в том, что, хотя я могу перебрать список идентификаторов и получить все строки, связанные я не могу показаться, чтобы найти путь к затем вставьте дополнительные строки, особенно без противной петли. по существу мне нужно преодолеть разрыв между датами и заполнить связанные значения Identity нулями.
list = ['Apple','Banana','Orange']
for i in range(0,len(list))
data.loc[data['Identity'].isin(list[i])]
EDIT:
Рабочий код ниже:
import pandas as pd
df = pd.DataFrame([['Apple',pd.to_datetime('1/1/2005'),10,10,'Orange'], ['Orange', pd.to_datetime('8/1/2005'),1, 1 ,'Apple'],['Apple', pd.to_datetime('12/1/2005'),1, 1 ,'Orange']])
df.columns = ['Identity','Date', 'value1' , 'value2','Random']
full_df = pd.DataFrame()
dummydata = []
indentity = ['Apple','Orange']
random = ['Orange','Apple']
years = ['2005','2005']
for i in range(0,2):
full_df = pd.DataFrame()
full_df['Date'] = [pd.to_datetime(str(x)+'/1/'+str(years[i])) for x in range(1,13)]
full_df['Identity'] = indentity[i]
full_df['Random'] = random[i]
dummydata.append(full_df)
full_df = pd.concat(dummydata)
result = full_df.merge(df,how='left').fillna(0)
#print(dummydata)
#print(full_df)
print(result)
Добро пожаловать в StackOverflow! Можете ли вы попытаться предоставить минимальный пример с данными csv, а затем код для минимального примера? Таким образом, мы можем скопировать данные csv и попробовать код и помочь вам. Например, вам не нужны газ, вода и т. Д., Возможно, всего 2 столбца. Это немного запутанно, когда вы используете «Apple» в своем примере, а ваш код отражает разные переменные. – imp9
Я полагаю, что добавление этого дополнительного кода не помогает, поскольку я хочу, чтобы это работало с использованием фреймворка данных pandas для скорости. Вы считаете, что интерполяция между не существующими датами путем вставки строк будет как один лайнер. –
. Я бы предложил уменьшить исходный код до минимального, так что вам легче и легче найти свою ошибку. Я был очень смущен, потому что это не соответствует примеру. – imp9