Ich wollte alle Variablen einfach zusammen speichern, also habe ich ein solches Programm erstellt. Es kann durch Anwenden eines zweidimensionalen Arrays gespeichert werden.
[Python] Verwenden Sie DataFrame, um beliebige Variablen und Arrays zusammen zu kennzeichnen und in csv [pandas] zu speichern Wenn Sie es in das Programm in der Produktion anstelle des Testprogramms integrieren Es gab einen Fehler, dass alle Namen als "Daten" gespeichert wurden, daher werde ich eine Problemumgehung schreiben. Die Ursache ist unbekannt, aber die detaillierten Symptome sind in [hier] zusammengefasst (# Fehlerinhaltsanalyse).
Über Weil die Daten im for-Teil auf "für Daten in Daten:" gesetzt wurden Es scheint, dass alle Namen als "Daten" gespeichert wurden. Sie können es also in Form von "datas [i]" angeben. Es ist ein Rätsel, warum dies mit Testcode und nicht in der Produktion möglich ist. Weil es in einer Funktion ist? ??
Es ist keine große Umschreibung, also lasse ich einfach den Quellcode
import pandas as pd
# ---Definieren Sie Variablen zum Testen---
a ,b,c,d = 1,2,3,4
xx = [3,6,8]
yy = [5,8,2]
zz = [8,2,8]
# ---Sammeln Sie Variablen in Dataframe und speichern Sie CSV---
def getName(obj):
return [k for k, v in globals().items() if id(obj) == id(v)][0] #Geben Sie den Variablennamen mit str zurück
df = pd.DataFrame()
datas = [xx,yy,zz] #Fügen Sie unter Verwendung des Variablennamens als Header ein eindimensionales Array zu einem Datenrahmen zusammen
for i in range(len(datas)):
df = pd.concat([df, pd.DataFrame({getName(datas[i]):datas[i]})],axis=1) # {}Fügen Sie mit set einen Datenrahmen mit concat hinzu
datas = [a,b,c,d]#Gruppieren Sie die Variablen in einem Datenrahmen, während Sie den Variablennamen als Header verwenden
for i in range(len(datas)):
df = pd.concat([df, pd.DataFrame({getName(datas[i]):[datas[i]]})],axis=1)# {}Fügen Sie mit set einen Datenrahmen mit concat hinzu
df.to_csv('test.csv')
print(df)
del df
output
xx yy zz a b c d
0 3 5 8 1.0 2.0 3.0 4.0
1 6 8 2 NaN NaN NaN NaN
2 8 2 8 NaN NaN NaN NaN
Nachdem Sie das ursprüngliche Programm gedreht, den Variablennamen geändert und dann erneut gedreht haben, ist der obige Fehler aus irgendeinem Grund aufgetreten.
import pandas as pd
# ---Definieren Sie Variablen zum Testen---
a ,b,c,d = 1,2,3,4
xx = [3,6,8]
yy = [5,8,2]
zz = [8,2,8]
# ---Sammeln Sie Variablen in Dataframe und speichern Sie CSV---
def getName(obj):
return [k for k, v in globals().items() if id(obj) == id(v)][0] #Geben Sie den Variablennamen mit str zurück
df = pd.DataFrame()
datas1 = [xx,yy,zz] #Fügen Sie unter Verwendung des Variablennamens als Header ein eindimensionales Array zu einem Datenrahmen zusammen
for data in datas1:
df = pd.concat([df, pd.DataFrame({getName(data):data})],axis=1) # {}Fügen Sie mit set einen Datenrahmen mit concat hinzu
datas2 = [a,b,c,d]#Gruppieren Sie die Variablen in einem Datenrahmen, während Sie den Variablennamen als Header verwenden
for data in datas2:
df = pd.concat([df, pd.DataFrame({getName(data):[data]})],axis=1)# {}Fügen Sie mit set einen Datenrahmen mit concat hinzu
df.to_csv('test.csv')
print(df)
del df
output
xx yy zz a b c d
0 3 5 8 1.0 2.0 3.0 4.0
1 6 8 2 NaN NaN NaN NaN
2 8 2 8 NaN NaN NaN NaN
Auf diese Weise gelingt es zum ersten Mal Wenn Sie den Variablennamen erneut ändern und in diesen Zustand versetzen
import pandas as pd
# ---Definieren Sie Variablen zum Testen---
a ,b,c,d = 1,2,3,4
xxx= [3,6,8] ###Ändere das
yyy= [5,8,2] ###Ändere das
zz= [8,2,8]
# ---Sammeln Sie Variablen in Dataframe und speichern Sie CSV---
def getName(obj):
return [k for k, v in globals().items() if id(obj) == id(v)][0] #Geben Sie den Variablennamen mit str zurück
df = pd.DataFrame()
###Hier ändern
datas1 = [xxx,yyy,zz] #Fügen Sie unter Verwendung des Variablennamens als Header ein eindimensionales Array zu einem Datenrahmen zusammen
for data in datas1:
df = pd.concat([df, pd.DataFrame({getName(data):data})],axis=1) # {}Fügen Sie mit set einen Datenrahmen mit concat hinzu
datas2 = [a,b,c,d]#Gruppieren Sie die Variablen in einem Datenrahmen, während Sie den Variablennamen als Header verwenden
for data in datas2:
df = pd.concat([df, pd.DataFrame({getName(data):[data]})],axis=1)# {}Fügen Sie mit set einen Datenrahmen mit concat hinzu
df.to_csv('test.csv')
print(df)
del df
output
data data zz a b c d
0 3 5 8 1.0 2.0 3.0 4.0
1 6 8 2 NaN NaN NaN NaN
2 8 2 8 NaN NaN NaN NaN
Der Name wird Daten wie diese sein
Recommended Posts