簡體   English   中英

如何使用 for 循環在 python 中附加數組?

[英]How can you use a for loop to append an array in python?

我正在嘗試為數據框的每一行在數據框的第一列中使用特定字符附加一個數組。

以下代碼僅適用於第一行:

indx = []
ldate = data.iat[0, 0]
year = ldate[0:4]
quarter = ldate[6]
myIndex = year + " Q" + quarter
indx.append(myIndex)

但是,當我嘗試使用 for 循環為每一行執行此操作時,我收到錯誤消息:

indx = []
for i in range(0,193):
    ldate = data.iat[0, i]
    year = ldate[0:4]
    quarter = ldate[6]
    myIndex = year + " Q" + quarter
    indx.append(myIndex)

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
IndexError: invalid index to scalar variable.

為什么for循環不能迭代?

你應該使用[i, 0]而不是[0, i]因為numpy.arraypandas.DataFrame (就像數學中的矩陣)使用[row,column]而不是 `[column,row]

import pandas as pd

df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])

for i in range(df.shape[0]):
    print(df.iat[i, 0], df[i].to_list())

您還可以使用df.iterrow() (或df.iteritems()df.itertuples() )來處理沒有range()i

import pandas as pd

df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])

for idx, row in df.iterrows():
    print(row[0], row.to_list())

但是在DataFrame您可以在沒有循環的情況下做很多事情

import pandas as pd

df = pd.DataFrame([
    ['2019  1', 1,2,3],
    ['2019  2', 4,5,6],
    ['2019  3', 7,8,9]])

result = df[0].apply(lambda x: x[:4] + " Q" + x[6])

print(result.to_list())

結果

['2019 Q1', '2019 Q2', '2019 Q3']

或者直接到同一個DataFrame

df['result'] = df[0].apply(lambda x: x[:4] + " Q" + x[6])

print(df)

結果

         0  1  2  3   result
0  2019  1  1  2  3  2019 Q1
1  2019  2  4  5  6  2019 Q2
2  2019  3  7  8  9  2019 Q3

暫無
暫無

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

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