簡體   English   中英

使用熊貓在循環中聯接和追加列

[英]Using Pandas to join and append columns in a loop

我想將循環中生成的表中的列追加到數據框。 我希望使用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)

為簡潔起見,縮短了選擇語句,但生成的表如下所示:

**基准

School_District
---------------
District_Alpha
District_Beta
...
District_Zed

**數據表

School_District|2016-01-01|
---------------|----------|
District_Alpha |  400     |
District_Beta  |  300     |
...            |  200     |
District_Zed   |  100     |

我已編寫了數據表,因此該列采用為該特定循環選擇的日期的名稱,因此一旦啟動並運行該列名稱就可以是唯一的。 但是,我的問題是上面的代碼僅產生一列數據。 我有一個很好的猜測,為什么:只有最后一次合並正在處理-我認為使用pandas.append可以解決該問題,但是pandas.append不會像merge那樣“加入”。 還有其他方法可以使用Pandas完成某種Join&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    |

您的錯誤在於語句finaltable = basetable.merge(datatable,...) 在每次循環迭代,在合並原basetabledatatable ,結果存儲在finaltable ...並丟棄。 您需要的是basetable = basetable.merge(datatable,...) 沒有finaltable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM