web-dev-qa-db-fra.com

Créer un bloc de données vide avec index à partir d'un autre bloc de données

J'ai une trame de données df1 avec plusieurs colonnes et lignes. Exemple simple:

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

Je voudrais créer un bloc de données vide df2 et plus tard, ajouter de nouvelles colonnes avec les résultats du calcul.

Pour l'instant, mon code ressemble à ceci:

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

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

... en ajoutant deux nouvelles colonnes:

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

Existe-t-il un moyen meilleur/plus sûr/plus rapide de le faire? Est-il possible de créer un bloc de données vide df2 et de copier uniquement l'index à partir de df1?

45
Michal
df2 = pd.DataFrame(index=df1.index)

Cela créera un DataFrame sans colonnes mais juste un index, et ce sera le même index que dans le df1.

71
Viktor Kerkez

Vous pouvez également affecter directement l'index d'une trame de données à une autre trame de données.

df2.index=df1.index

2
Anand Mohan

Il est préférable de définir l'index comme df1.index.copy ()

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

Vous pouvez utiliser df1.index est df2.index pour vérifier s'il s'agit du même objet

2
waitingkuo

Vous pouvez utiliser ce code court:

df2=df1[[]].copy()

1
Paulo Pinto