ループ内で生成された列をデータフレームに追加したい。私はpandas.merge
を使ってこれを達成することを望んでいましたが、それは私のために働いていないようです。Pandasを使用してループ内で列を結合して追加する
マイコード:簡潔のためにSELECT文を短縮
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)
が、テーブルのこのような生産見た目:
** 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 |
私は、特定のループのために選択された日付の名前を列に持つようにデータテーブルを書きました。列名は一度取得して実行すると一意になる可能性があります。しかし、私の問題は、上記のコードは1列のデータしか生成しないということです。私は理由を推測しています:最後のマージだけが処理されています - 私は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