如何使用for循环在python中追加数组?

问题描述 投票:0回答:1

我正在尝试在数据帧的第一列中为数据帧的每一行使用特定字符附加数组。

以下代码仅适用于第一行:

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循环不能迭代?

python for-loop append
1个回答
0
投票

您应该使用[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']
© www.soinside.com 2019 - 2024. All rights reserved.