95

我有一个包含多列和多行的数据框df1 。简单的例子:

    TIME T1  T2 
       1 10 100
       2 20 200
       3 30 300

我想创建一个空数据框df2,然后在计算结果中添加新列。

此刻,我的代码如下所示:

     df1=pd.read_csv("1.txt",index_col="TIME")

     df2=df1.copy()[[]] #copy df1 and erase all columns

...添加两个新列:

     df2["results1"],df2["results2"]=df1["T1"]*df["T2"]*3,df1["T2"]+100

有没有更好/更安全/更快的方法来做到这一点?是否可以创建一个空数据框 df2 并且只从 df1 复制索引?

4

5 回答 5

149
df2 = pd.DataFrame(index=df1.index)

这将创建一个没有列但只有一个索引的 DataFrame,它将与 df1.xml 中的索引相同。

于 2013-08-11T21:37:43.650 回答
13

最好将索引设置为 df1.index.copy()

df2 = pd.DataFrame(index=df1.index.copy())

您可以使用df1.indexisdf2.index来检查它们是否是同一个对象

于 2013-08-12T06:51:27.053 回答
8

您还可以直接将数据帧的索引分配给另一个数据帧。

df2.index=df1.index

于 2018-10-18T18:16:41.110 回答
3

您可以使用以下短代码:

df2=df1[[]].copy()

于 2019-05-27T16:07:32.193 回答
0

为避免NaN在 concat 之后获得所有的索引,请为其添加索引。

df1 = pd.DataFrame(x1.toarray(),index=simpledf.index, columns=v.get_feature_names())

使用转换定义新数据帧时,X使用与原始数据帧相同的索引。

于 2020-02-23T05:16:49.927 回答