【发布时间】:2015-02-12 14:03:51
【问题描述】:
我从某个地方收到了一个 DataFrame,并想创建另一个具有相同数量和名称的列和行(索引)的 DataFrame。例如,假设原始数据框创建为
import pandas as pd
df1 = pd.DataFrame([[11,12],[21,22]], columns=['c1','c2'], index=['i1','i2'])
我通过明确定义列和名称来复制结构:
df2 = pd.DataFrame(columns=df1.columns, index=df1.index)
我不想复制数据,否则我可以写df2 = df1.copy()。换句话说,在创建 df2 之后,它必须只包含 NaN 元素:
In [1]: df1
Out[1]:
c1 c2
i1 11 12
i2 21 22
In [2]: df2
Out[2]:
c1 c2
i1 NaN NaN
i2 NaN NaN
有没有更惯用的方法?
【问题讨论】:
-
我认为没有比您尝试过的更好的方法了,您也可以使用您想要的结构创建一个空的 df 并复制它,在我看来这确实不如性能在单个操作中使用您想要的数据和结构创建 df
-
感谢 EdChum 的建议,但这段代码从其他地方接收原始 DataFrame。我将编辑我的问题以使其更清楚。
-
我仍然认为没有更好的方法,而且您的意图很清楚,因为您没有将数据传递给构造函数