Je voulais enregistrer toutes les variables ensemble facilement, j'ai donc créé un tel programme. Il peut être enregistré en appliquant un tableau à deux dimensions.
J'ai utilisé [python] DataFrame pour étiqueter des variables et des tableaux arbitraires ensemble et les enregistrer dans csv [pandas]. Si vous l'incorporez dans le programme en production au lieu du programme de test Il y avait un bogue que tous les noms étaient enregistrés en tant que «données», donc j'écrirai une solution de contournement. La cause est inconnue, mais les symptômes détaillés sont résumés dans [ici](#Bug content analysis).
Au dessus de
Parce que les données étaient définies sur pour les données dans les données:
dans la partie pour
Il semble que tous les noms ont été enregistrés en tant que «données».
Vous pouvez donc le spécifier sous la forme de datas [i]
.
La raison pour laquelle cela peut être fait avec du code de test et non en production est un mystère. Parce que c'est dans une fonction? ??
Ce n'est pas une grosse réécriture, donc je vais juste laisser le code source
import pandas as pd
# ---Définir des variables pour les tests---
a ,b,c,d = 1,2,3,4
xx = [3,6,8]
yy = [5,8,2]
zz = [8,2,8]
# ---Collectez les variables dans le dataframe et enregistrez le CSV---
def getName(obj):
return [k for k, v in globals().items() if id(obj) == id(v)][0] #Renvoie le nom de la variable avec str
df = pd.DataFrame()
datas = [xx,yy,zz] #En utilisant le nom de la variable comme en-tête, assemblez un tableau unidimensionnel dans une trame de données
for i in range(len(datas)):
df = pd.concat([df, pd.DataFrame({getName(datas[i]):datas[i]})],axis=1) # {}Ajouter un dataframe avec concat en utilisant set
datas = [a,b,c,d]#Tout en utilisant le nom de la variable comme en-tête, regroupez les variables dans un dataframe
for i in range(len(datas)):
df = pd.concat([df, pd.DataFrame({getName(datas[i]):[datas[i]]})],axis=1)# {}Ajouter un dataframe avec concat en utilisant set
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
Après avoir tourné le programme d'origine, changé le nom de la variable, puis le tourner à nouveau, l'erreur ci-dessus s'est produite pour une raison quelconque.
import pandas as pd
# ---Définir des variables pour les tests---
a ,b,c,d = 1,2,3,4
xx = [3,6,8]
yy = [5,8,2]
zz = [8,2,8]
# ---Collectez les variables dans le dataframe et enregistrez le CSV---
def getName(obj):
return [k for k, v in globals().items() if id(obj) == id(v)][0] #Renvoie le nom de la variable avec str
df = pd.DataFrame()
datas1 = [xx,yy,zz] #En utilisant le nom de la variable comme en-tête, assemblez un tableau unidimensionnel dans une trame de données
for data in datas1:
df = pd.concat([df, pd.DataFrame({getName(data):data})],axis=1) # {}Ajouter un dataframe avec concat en utilisant set
datas2 = [a,b,c,d]#Tout en utilisant le nom de la variable comme en-tête, regroupez les variables dans un dataframe
for data in datas2:
df = pd.concat([df, pd.DataFrame({getName(data):[data]})],axis=1)# {}Ajouter un dataframe avec concat en utilisant set
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
De cette façon, la première fois qu'il réussit Si vous modifiez à nouveau le nom de la variable et mettez-le dans cet état
import pandas as pd
# ---Définir des variables pour les tests---
a ,b,c,d = 1,2,3,4
xxx= [3,6,8] ###Change ça
yyy= [5,8,2] ###Change ça
zz= [8,2,8]
# ---Collectez les variables dans le dataframe et enregistrez le CSV---
def getName(obj):
return [k for k, v in globals().items() if id(obj) == id(v)][0] #Renvoie le nom de la variable avec str
df = pd.DataFrame()
###Changer ici
datas1 = [xxx,yyy,zz] #En utilisant le nom de la variable comme en-tête, assemblez un tableau unidimensionnel dans une trame de données
for data in datas1:
df = pd.concat([df, pd.DataFrame({getName(data):data})],axis=1) # {}Ajouter un dataframe avec concat en utilisant set
datas2 = [a,b,c,d]#Tout en utilisant le nom de la variable comme en-tête, regroupez les variables dans un dataframe
for data in datas2:
df = pd.concat([df, pd.DataFrame({getName(data):[data]})],axis=1)# {}Ajouter un dataframe avec concat en utilisant set
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
Le nom sera des données comme celle-ci
Recommended Posts