[英]Creating an empty dataframe or List with column names then add data by column names
我正在嘗試通過將我在 VB 中編寫的代碼轉換為 python 來學習 python 2.7。 我有列名,我正在嘗試創建一個空的數據框或列表,然后通過迭代添加行(見下文)。 我不知道我需要提前添加的總行數。 我可以用列名創建一個數據框,但不知道如何添加數據。 我已經看過幾個像我這樣的問題,但數據的行/列事先是未知的。
代碼片段:
cnames=['Security','Time','Vol_21D','Vol2_21D','MaxAPV_21D','MinAPV_21D' ]
df_Calcs = pd.DataFrame(index=range(10), columns=cnames)
這會創建空的 df (df_Calcs)...然后下面的代碼是我獲取數據以填充行的地方...我使用 n 作為新行 # 插入的計數器(我添加了其他 20 列到行),但下面應該解釋我想要做什么。
i = 0
n = 0
while True:
df_Calcs.Security[n] = i + 1
df_Calcs.Time[n] = '09:30:00'
df_Calcs.Vol_21D[n] = i + 2
df_Calcs.Vol2_21D[n] = i + 3
df_Calcs.MaxAPV_21D[n] = i + 4
df_Calcs.MinAPV_21D[n] = i + 5
i = i +1
n = n +1
if i > 4:
break
打印 df_Calcs 如果我應該使用列表或數組,請告訴我,我正在嘗試以最快最有效的方式執行此操作。 然后,這些數據將被發送到 MySQL 數據庫表。
結果...
Security Time Vol_21D Vol2_21D MaxAPV_21D MinAPV_21D
0 1 09:30:00 2 3 4 5
1 2 09:30:00 3 4 5 6
2 3 09:30:00 4 5 6 7
3 4 09:30:00 5 6 7 8
4 5 09:30:00 6 7 8 9
5 NaN NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN NaN
7 NaN NaN NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN NaN
9 NaN NaN NaN NaN NaN NaN
你有很多方法可以做到這一點。
創建空數據框:
cnames=['Security', 'Time', 'Vol_21D', 'Vol2_21D', 'MaxAPV_21D', 'MinAPV_21D']
df = pd.DataFrame(columns=cnames)
輸出:
Empty DataFrame
Columns: [Security, Time, Vol_21D, Vol2_21D, MaxAPV_21D, MinAPV_21D]
Index: []
然后,在循環中,您可以創建一個 pd.series 並附加到您的數據幀,例如:
df.append(pd.Series([1, 2, 3, 4, 5, 6], cnames), ignore_index=True)
或者你可以附加一個字典:
df.append({'Security': 1,
'Time': 2,
'Vol_21D': 3,
'Vol2_21D': 4,
'MaxAPV_21D': 5,
'MinAPV_21D': 6
}, ignore_index=True)
這將是相同的輸出:
Security Time Vol_21D Vol2_21D MaxAPV_21D MinAPV_21D
0 1 2 3 4 5 6
但我認為,更快和 Pythonic 的方式:首先創建一個數組,然后將所有原始數據附加到數組並從數組制作數據幀。
data = []
for i in range(0,5):
data.append([1,2,3,4,i,6])
df = pd.DataFrame(data, columns=cnames)
我希望它有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.