Pandas: Hinzufügen einer neuen Spalte zum Datenrahmen, die eine Kopie der Indexspalte ist

Lesezeit: 2 Minuten

Pandas Hinzufugen einer neuen Spalte zum Datenrahmen die eine Kopie
Wertvoller Prozess

Ich habe einen Datenrahmen, den ich mit Matplotlib zeichnen möchte, aber die Indexspalte ist die Zeit und ich kann sie nicht zeichnen.

Dies ist der Datenrahmen (df3):

Geben Sie hier die Bildbeschreibung ein

aber wenn ich folgendes probiere:

plt.plot(df3['magnetic_mag mean'], df3['YYYY-MO-DD HH-MI-SS_SSS'], label="FDI")

Ich bekomme offensichtlich einen Fehler:

KeyError: 'YYYY-MO-DD HH-MI-SS_SSS'

Was ich also tun möchte, ist, meinem Datenrahmen (mit dem Namen „Time“) eine neue zusätzliche Spalte hinzuzufügen, die nur eine Kopie der Indexspalte ist.

Wie kann ich es tun?

Dies ist der gesamte Code:

#Importing the csv file into df
df = pd.read_csv('university2.csv', sep=";", skiprows=1)

#Changing datetime
df['YYYY-MO-DD HH-MI-SS_SSS'] = pd.to_datetime(df['YYYY-MO-DD HH-MI-SS_SSS'], 
                                               format="%Y-%m-%d %H:%M:%S:%f")

#Set index from column
df = df.set_index('YYYY-MO-DD HH-MI-SS_SSS')

#Add Magnetic Magnitude Column
df['magnetic_mag'] = np.sqrt(df['MAGNETIC FIELD X (μT)']**2 + df['MAGNETIC FIELD Y (μT)']**2 + df['MAGNETIC FIELD Z (μT)']**2)

#Subtract Earth's Average Magnetic Field from 'magnetic_mag'
df['magnetic_mag'] = df['magnetic_mag'] - 30

#Copy interesting values
df2 = df[[ 'ATMOSPHERIC PRESSURE (hPa)',
          'TEMPERATURE (C)', 'magnetic_mag']].copy()

#Hourly Average and Standard Deviation for interesting values 
df3 = df2.resample('H').agg(['mean','std'])
df3.columns = [' '.join(col) for col in df3.columns]

df3.reset_index()
plt.plot(df3['magnetic_mag mean'], df3['YYYY-MO-DD HH-MI-SS_SSS'], label="FDI")  

Danke schön !!

1644318489 251 Pandas Hinzufugen einer neuen Spalte zum Datenrahmen die eine Kopie
Israel

Ich denke, Sie brauchen reset_index:

df3 = df3.reset_index()

Mögliche Lösung, aber ich denke inplace ist keine gute Praxis, überprüfen Dies und Dies:

df3.reset_index(inplace=True)

Wenn Sie jedoch eine neue Spalte benötigen, verwenden Sie:

df3['new'] = df3.index

Ich glaube du kannst read_csv besser:

df = pd.read_csv('university2.csv', 
                 sep=";", 
                 skiprows=1,
                 index_col="YYYY-MO-DD HH-MI-SS_SSS",
                 parse_dates="YYYY-MO-DD HH-MI-SS_SSS") #if doesnt work, use pd.to_datetime

Und dann weglassen:

#Changing datetime
df['YYYY-MO-DD HH-MI-SS_SSS'] = pd.to_datetime(df['YYYY-MO-DD HH-MI-SS_SSS'], 
                                               format="%Y-%m-%d %H:%M:%S:%f")
#Set index from column
df = df.set_index('YYYY-MO-DD HH-MI-SS_SSS')

Sie können direkt auf den Index zugreifen und ihn grafisch darstellen lassen, im Folgenden ein Beispiel:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))

#Get index in horizontal axis
plt.plot(df.index, df[0])
plt.show()

Geben Sie hier die Bildbeschreibung ein

 #Get index in vertiacal axis
 plt.plot(df[0], df.index)
 plt.show()

Geben Sie hier die Bildbeschreibung ein

.

821860cookie-checkPandas: Hinzufügen einer neuen Spalte zum Datenrahmen, die eine Kopie der Indexspalte ist

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy