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

如何使用for循环在python中附加数组?,python,for-loop,append,Python,For Loop,Append,我试图在数据帧的第一列中为数据帧的每一行添加一个使用特定字符的数组 以下代码仅适用于第一行: 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): ldat

我试图在数据帧的第一列中为数据帧的每一行添加一个使用特定字符的数组

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

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.
indx=[]
对于范围(0193)内的i:
ldate=data.iat[0,i]
年份=L日期[0:4]
季度=ldate[6]
myIndex=年度+季度+季度
indx.append(myIndex)
回溯(最近一次呼叫最后一次):
文件“”,第3行,在
索引器错误:标量变量的索引无效。

为什么for循环不能迭代?

您应该使用
[i,0]
而不是
[0,i]
,因为
numpy.array
pandas.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()
)来处理没有
范围()
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']
         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
或者直接到同一数据帧

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

print(df)
结果

['2019 Q1', '2019 Q2', '2019 Q3']
         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

您的错误在第
ldate=data.iat[0,i]
行中,可能是因为您没有
data.iat[0,1]
,…
data.iat[0193]
。对于数据中的项,您应该使用类似于
的东西:
,或者它应该是
[i,0]
而不是
[0,i]
,因为
numpy.array
(就像数学中的矩阵)使用
[row,column]
,而不是
[column,row]
您可以发布一个数据示例吗?谢谢,它与
数据一起工作。iat[i,0]