Python 替换数据帧中的行
我想从一个空数据框开始,然后每次添加一行。 我甚至可以从0数据帧Python 替换数据帧中的行,python,pandas,dataframe,Python,Pandas,Dataframe,我想从一个空数据框开始,然后每次添加一行。 我甚至可以从0数据帧data=pd.DataFrame(np.zeros(shape=(10,2)),column=[“a”,“b”])开始,然后每次替换一行 如何才能做到这一点?使用.loc进行基于标签的选择,您必须了解如何正确切片:并了解为什么应避免链式分配: 如果要替换整行,则可以只使用索引,而不需要行、列切片。 data.loc[2]=5,6您有这样做的理由吗?我建议使用append创建列表,然后在生成所有数据后转换为数据帧(如果可能)。如果
data=pd.DataFrame(np.zeros(shape=(10,2)),column=[“a”,“b”])
开始,然后每次替换一行
如何才能做到这一点?使用
.loc
进行基于标签的选择,您必须了解如何正确切片:并了解为什么应避免链式分配:
如果要替换整行,则可以只使用索引,而不需要行、列切片。
data.loc[2]=5,6您有这样做的理由吗?我建议使用
append
创建列表,然后在生成所有数据后转换为数据帧(如果可能)。如果需要在切片上进行操作,它会更快,并且在分析之后,您可以始终迭代数据帧的子集。我同意,但是请注意,构建列表会很慢,因为列表将定期需要通过创建具有足够空间的新列表和复制内容来增长。取决于数据的大小,对于较小的数据,它是不相关的,对于较大的数据,它是重要的。最好使用dict或numpy数组定期添加数据,然后从中构造数据帧。我希望在交互式会话中能够轻松快速地记录结果。我的数据帧将少于行,因此速度不是问题。在R中,我将使用rbind(数据帧,行)。因此,您认为我应该执行d=[]-->d.append([3,4])…使用concat
添加一行。请参见:正如EdChum所说,如果您只是在交互式会话中记录内容,这并不重要。我们的评论实际上假设您试图在循环中构建数据帧。在你的情况下,我可能会附加,但那只是习惯。只要数据类型适合您所做的工作,我就不会太担心了。如果您要更新整行,就不需要指定列,data.loc[2]=5,6
。请注意,如果要使用相同的值更新整行,可以只键入data.loc[2]=3
,如果提供的值多于列,则会得到ValueError
In [14]:
data=pd.DataFrame(np.zeros(shape=(10,2)),columns=["a","b"])
data
Out[14]:
a b
0 0 0
1 0 0
2 0 0
3 0 0
4 0 0
5 0 0
6 0 0
7 0 0
8 0 0
9 0 0
[10 rows x 2 columns]
In [15]:
data.loc[2:2,'a':'b']=5,6
data
Out[15]:
a b
0 0 0
1 0 0
2 5 6
3 0 0
4 0 0
5 0 0
6 0 0
7 0 0
8 0 0
9 0 0
[10 rows x 2 columns]