如何创建与另一个相同维度的空DataFrame?

38 投票
5 回答
73371 浏览
提问于 2025-04-18 03:34

我查了一下,但找不到好的答案。我想创建一个和另一个数据框(dataframe)尺寸相同的空数据框,这样我就可以添加新列。现在我创建一个填满零的空数据框,然后再删除那个零列。我希望有更好的方法,但找不到答案。有人能帮帮我吗?

我现在是这样做的,虽然能用,但看起来很丑。

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行的子列表,然后把这个列表复制到正确的子列,重复这个过程。这比添加新列要快吗?

5 个回答

2

这个功能就是帮你保留 columns 的 :)

empty_df = df.iloc[:0]
4

@GaspareBonventre的回答可能会比较慢,这是因为Pandas DataFrame构造函数的一个问题。我发现这样做会快很多:

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
16

这段代码的作用是……

首先,它会……然后,它会……接着,它会……最后,结果会是……

简单来说,这段代码就是在做……

如果你对这个过程有疑问,可以想象成……

总之,这段代码的核心就是……

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

如果你来到这个页面是想创建一个没有任何数据的、列名和数据类型都一样的表格(dataframe),那么你可以参考下面的代码:

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

创建一个空的数据框,它的索引和列名和另一个数据框完全一样:

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

撰写回答