如何使用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]