我想將循環中生成的表中的列追加到數據框中。我希望用pandas.merge
來完成這個,但它似乎並沒有爲我工作。使用熊貓在循環中加入和追加列
我的代碼:
from datetime import date
from datetime import timedelta
import pandas
import numpy
import pyodbc
date1 = date(2017, 1, 1) #Starting Date
date2 = date(2017, 1, 10) #Ending Date
DateDelta = date2 - date1
DateAdd = DateDelta.days
StartDate = date1
count = 1
# Create the holding table
conn = pyodbc.connect('Server Information')
**basetable = pandas.read_sql("SELECT....")
while count <= DateAdd:
print(StartDate)
**datatable = pandas.read_sql("SELECT...WHERE Date = "+str(StartDate)+"...")
finaltable = basetable.merge(datatable,how='left',left_on='OrganizationName',right_on='OrganizationName')
StartDate = StartDate + timedelta(days=1)
count = count + 1
print(finaltable)
縮短爲簡潔起見的select語句,但表生成這個樣子的:
** Basetable
School_District
---------------
District_Alpha
District_Beta
...
District_Zed
**的DataTable
School_District|2016-01-01|
---------------|----------|
District_Alpha | 400 |
District_Beta | 300 |
... | 200 |
District_Zed | 100 |
我有寫的數據表,所以列採用爲特定循環選擇的日期的名稱,所以列名可以是唯一的,一旦我得到這個啓動和運行。然而,我的問題是,上面的代碼只產生一列數據。我有一個很好的猜測,爲什麼:只有最後一個合併正在處理 - 我認爲使用pandas.append
將是解決這個問題的方法,但pandas.append
不像合併那樣「加入」。是否有其他方式來完成一種加入&使用熊貓追加?我的目標是保持這種靈活性,以便根據我們的數據需求輕鬆輸入其他日期。
最後,我希望看到的是:
School_District|2016-01-01|2016-01-02|... |2016-01-10|
---------------|----------|----------|-----|----------|
District_Alpha | 400 | 1 | | 45 |
District_Beta | 300 | 2 | | 33 |
... | 200 | 3 | | 5435 |
District_Zed | 100 | 4 | | 333 |
好吧,這很尷尬 - 這是一個簡單的修復。感謝您的幫助。 – userPinealbody