Da der erste Schritt des Konzeptentwurfs "Verarbeiten der Rohdaten durch" Integrieren der Arbeitszeit, wenn andere Werte als der Name des Mitarbeiters und die Arbeitszeit gleich sind "" implementiert wurde, werden wir sie zusammenfassen. https://qiita.com/wellwell3176/items/7dba981b479c5933bf5f Abbildung: Auszug aus Rohdaten Da der Name des Mitarbeiters als Daten nicht erforderlich ist, möchte ich den Namen des Mitarbeiters löschen und die Arbeitszeit addieren, wenn alle Informationen außer dem Namen des Mitarbeiters identisch sind.
program
import pandas as pd
df=pd.read_excel('/content/drive/My Drive/Colab Notebooks/data2.xlsx')
df["Einstufung"]=df["Einstufung"]+df["Unternehmen"] #後工程で必要なのでEinstufungとUnternehmenは一括表示にする
df=df.rename(columns = {'Einstufung':'業務Einstufung'} #Ändern Sie auch die Zeilenüberschrift
df["Arbeitszeit"] = pd.to_datetime(df["Arbeitszeit"],format="%H:%M:%S")
#Da die Arbeitszeit von der Excel-Benutzerdefinition als Rohdaten eingegeben wurde, konvertieren Sie die Zeichenfolge in datetime, indem Sie das Format angeben
df["Arbeitszeit"] = df["Arbeitszeit"].dt.minute
#Die Zahlen sind[~~ Minuten][~~ Zeit]Da eine Anforderung zum Anzeigen vorliegt, legen Sie die Datums- und Uhrzeitangabe fest[Protokoll]In int-Typ konvertieren
df2=df.groupby(["Thema","Zeit","Ländername","Geschäftsbereich"],as_index=False).sum()
#Aggregieren nach anderem als dem Namen des Mitarbeiters. df.Beachten Sie, dass das Ergebnis von groupby nur gespeichert wird, wenn es zugewiesen ist.
df2.to_excel('/content/drive/My Drive/Colab Notebooks/data5.xlsx')
Abbildung: Programmausgabeergebnis Dies ist in Ordnung, da die Zeichenkettenkombination des Geschäftsbereichs, das Löschen des Mitarbeiternamens und die Aggregation der Zeit realisiert werden.
** 1. Zeichenfolge kann mit to_datetime nicht in Zeit konvertiert werden **
python
df["Arbeitszeit"] = pd.to_datetime(df["Arbeitszeit"])
-->TypeError: <class 'datetime.time> is not convertible to datetime
#Es gab ein Problem mit dem "Anzeigeformat" von Excel. Benutzerdefiniertes "hh":mm ”wird verwendet und die Standardeinstellung ist_Ich konnte dies zum Zeitpunkt des Datums nicht lesen
#Gelöst durch Verwendung der Formatoption und Angabe der Beschreibungsmethode der entsprechenden Spalte
df["Arbeitszeit"] = pd.to_datetime(df["Arbeitszeit"],format="%H:%M:%S") #Das ist in Ordnung
** 2. Arbeitszeiten werden nicht nach Gruppen von ** zusammengefasst
Version fehlgeschlagen
df["Arbeitszeit"] = pd.to_datetime(df["Arbeitszeit"],format="%H:%M:%S")
df.groupby("Ländername").mean()
ValueError:Keine Achse mit dem Namen Thema für den Objekttyp<class 'pandas.core.frame.DataFrame'>
Es wurde wie in der obigen Abbildung gezeigt ausgegeben, und die Aggregation nach "Arbeitszeit" trat nicht auf. Die Ursache scheint zu sein, dass das Datum / Uhrzeit-Format nicht als aggregierter Wert der groupby-Funktion erkannt wurde. Gelöst durch Ändern von datetime in int type wie das fertige Produkt.
Erfolgreiche Version
df["Arbeitszeit"] = pd.to_datetime(df["Arbeitszeit"],format="%H:%M:%S")
df["Arbeitszeit"] = df["Arbeitszeit"].dt.minute
df.groupby("Ländername").mean()
Damit kann die Arbeitszeit in Form von ~~ [Minuten] auf der Tabellenseite erfasst werden.
3. AttributeError: 'Series' object has no attribute 'minute'
python
df["Arbeitszeit"] = df["Arbeitszeit"].minute #Ich erhalte eine Fehlermeldung
--> AttributeError: 'Series' object has no attribute 'minute'
#.Da dt fehlte, df["Arbeitszeit"]Konnte für eine Reihe von Arrays nicht verarbeitet werden
df["Arbeitszeit"] = df["Arbeitszeit"].dt.minute #Dies ist die richtige Antwort
4. ValueError: No axis named HOGE for object type class'pandas.core.frame.DataFrame'
python
df.groupby("Ländername","Thema").sum() #Ich erhalte eine Fehlermeldung
-->ValueError:Keine Achse mit dem Namen Thema für den Objekttyp<class 'pandas.core.frame.DataFrame>
#Ein Beschreibungsfehler bei Verwendung mehrerer Indizes in der Groupby-Funktion.[]War nicht genug.
df.groupby(["Thema","Ländername"]).sum() #Das ist in Ordnung
Der Spaltenname kann nicht mit rename () https://teratail.com/questions/291634 geändert werden Verwendung von Pandas groupby https://qiita.com/propella/items/a9a32b878c77222630ae So konvertieren Sie ein Datum mit Series.dt () in Pandas https://qiita.com/Takemura-T/items/79b16313e45576bb6492