创建与另一个尺寸相同的空Dataframe?

时间:2014-04-21 10:12:36

标签: python pandas

我已经搜了一下,但找不到一个好的答案。我想创建一个与另一个数据帧具有相同维度的空数据框,以便添加新列。今天我创建一个用零填充的空数据框,然后删除零列。我希望有更好的方法,但找不到答案。有人能帮助我吗?

我今天喜欢这个并且它有效,但它非常难看。

df_copy = pandas.DataFrame(numpy.zeros(len(df_original.index))) 
df_copy = df_copy.drop([0],axis=1) 

现在我可以在处理数据时添加新列。所以基本上我想要一个与另一个数据帧具有相同尺寸的空数据帧。

df_copy["price"] = pricesList
df_copy["size"] = sizesList

编辑:另一个密切相关的问题:如何创建尺寸为mxn的空数据框?我在下面得到了如何创建一个尺寸为1xn的空数据帧的答案,即通过设置索引。但是如何创建一个用零填充的空nxm数据帧?我问的原因是因为我怀疑(?)创建零填充数据帧更快,然后根据需要替换每个元素。另一种方法是创建一个尺寸为1xn的空数据框,然后根据需要添加列 - 我被告知速度很慢。因此,创建具有nxm维度的空数据框然后根据需要替换元素(通过将列表复制到每个列)可能会更快。假设一列有100行,我创建了一个包含25行的子列表,所以我只是将这个列表复制到正确的子列,然后重复。这比添加新列快吗?

4 个答案:

答案 0 :(得分:15)

使用与另一个数据帧相同的索引和列创建空数据框:

import pandas as pd
df_copy = pd.DataFrame().reindex_like(df_original)

答案 1 :(得分:7)

import pandas as pd 
df_copy = pd.DataFrame(index=df_original.index,columns=df_original.columns)

答案 2 :(得分:2)

@GaspareBonventre的answer可能很慢,因为使用了Pandas DataFrame构造函数的an issue。我发现它做起来要快得多

import numpy as np
df_copy = pd.DataFrame(np.zeros(df_original.shape))
df_copy.index = df_original.index
df_copy.columns = df_original.columns

答案 3 :(得分:2)

对于任何希望创建此页面的用户,如果希望创建一个具有相同列,相同dtypes并且没有行的数据框:

import pandas as pd
df_copy = df_original.iloc[0:0,:].copy()