0
這裏的問題是我拉一個csv成熊貓的數據幀,看起來像這樣:有條件地將行插入大熊貓數據幀
Identity Date value1 value2 Random
Apple 1/1/2005 10 10 Orange
Apple 12/1/2005 1 1 Orange
我需要再調用身份蘋果,發現它的最小值和最大值的日期,插入行,即個月,以便在兩點之間進行插值,以便最終結果變成
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
的問題是,雖然我可以通過標識列表循環,並獲得相關的所有行我似乎無法找到一種方法,然後插入額外的行,尤其是沒有討厭的循環。基本上我需要彌合日期間隔並用零填充關聯的身份值。
list = ['Apple','Banana','Orange']
for i in range(0,len(list))
data.loc[data['Identity'].isin(list[i])]
編輯:
工作下面的代碼:
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
我想添加這個額外的代碼不會有幫助,因爲我希望這可以使用熊貓數據框來提高速度。你會認爲通過插入行來插入非現有日期之間的內插就像是一個班輪 –
我建議將原始代碼減少到最小,以便你和其他人更容易找到你的錯誤。我很困惑,因爲它不符合這個例子。 – imp9