在循环中添加行的原因有两个,1. 添加到现有的数据框中,2. 创建一个新的数据框。
要创建一个新的数据框,我认为应该将数据创建为列表,然后再创建数据框,这一点已经得到了很好的记录:
cols = ['c1', 'c2', 'c3']
lst = []
for a in range(2):
lst.append([1, 2, 3])
df1 = pd.DataFrame(lst, columns=cols)
df1
Out[3]:
c1 c2 c3
0 1 2 3
1 1 2 3
或者,创建带有索引的数据框,然后向其中添加数据
cols = ['c1', 'c2', 'c3']
df2 = pd.DataFrame(columns=cols, index=range(2))
for a in range(2):
df2.loc[a].c1 = 4
df2.loc[a].c2 = 5
df2.loc[a].c3 = 6
df2
Out[4]:
c1 c2 c3
0 4 5 6
1 4 5 6
如果您想要添加到现有的数据框中,您可以使用上述任一方法,然后将数据框连接在一起(可以选择保留或不保留索引):
df3 = df2.append(df1, ignore_index=True)
df3
Out[6]:
c1 c2 c3
0 4 5 6
1 4 5 6
2 1 2 3
3 1 2 3
或者,您也可以创建一个字典条目列表,并像上面的答案一样将它们附加到其中。
lst_dict = []
for a in range(2):
lst_dict.append({'c1':2, 'c2':2, 'c3': 3})
df4 = df1.append(lst_dict)
df4
Out[7]:
c1 c2 c3
0 1 2 3
1 1 2 3
0 2 2 3
1 2 2 3
使用 dict(zip(cols, vals))。
lst_dict = []
for a in range(2):
vals = [7, 8, 9]
lst_dict.append(dict(zip(cols, vals)))
df5 = df1.append(lst_dict)
包括下面评论中的想法:
事实证明,Pandas确实有一种有效的方法来追加到数据框中:
df.loc[ len(df) ] = [new, row, of, data]
这将会在原地向数据框的末尾“追加”内容。- Demis Mar 22 at 15:32
np.unique()
等来生成完整的列列表;在循环结束时,从列表中创建DataFrame。 - Demis