Ich habe ein Problem mit einem Listenverständnis innerhalb einer Schleife. Ich möchte Elemente aus einer Liste zu einer anderen hinzufügen.Elemente aus der Liste mit Listenverständnis zuordnen?
Ich verwende map class
und zip
innerhalb des Listenverständnisses.
from pandas import Series, DataFrame
import pandas
x = ['a', 'b', 'c', 'd', 'e']
y = [2, 3, 6, 7, 4]
ser = {'A': Series(x), 'B': Series(y)}
df = DataFrame(ser)
targets = df['A'].tolist()
df['A1999'] = [i + 1 for i in df['B']]
df['A2000'] = [i + 2 for i in df['B']]
df['A2001'] = [i + 3 for i in df['B']]
df['A2002'] = [i + 1.7 for i in df['B']]
df['A2003'] = [i + 1.1 for i in df['B']]
y = range(1999, 2004)
gaps = []
for t in targets:
temp = []
years = []
for ele in y:
target = 'A' + str(ele)
new = df[target][df['A'] == t].tolist()
temp.append(new)
years.append(ele)
gap = [list(map(list, zip(years, item))) for item in temp]
gaps.append(gap)
Und die Ausgabe:
[[[[1999, 3]], [[1999, 4]], [[1999, 5]], [[1999, 3.7000000000000002]],
[[1999, 3.1000000000000001]]]...
Was ich suche ist:
[[[[1999, 3]], [[2000, 4]], [[2001, 5]], [[2002, 3.7000000000000002]],
[[2003, 3.1000000000000001]]]...
Wie kann ich die Liste Verständnis festsetzen, um alle Baujahre von years list
und nicht hinzufügen nur die erste (dh 1999)
ich versuchte mit diesem Beispiel, aber ich glaube, ich bin das gleiche tun:
gap = [[[years[i], x] for i, x in enumerate(y)] for y in temp]
oder
gap = [list(map(list, zip([[y] for y in years], item))) for item in temp]
In Ihrer zweiten Schleife 'in y 'Sie ordnen der Lücke viele Werte zu, aber fügen nur die letzte hinzu (da 'gaps.append (gap)') außerhalb der Schleife liegt. Soll das so sein? – RafaelC
Zum Beispiel ist dieses Item '[[2000, 4]]' was du wirklich brauchst (im Gegensatz zu '[2000, 4]')? – CristiFati
Ja. 'Gaps.append (Spalt)' draußen sein muss, alles andere Art und Weise 'gap' als Jahre' lenght' sein wird, was ich will, ist Ziele 'lenght' – estebanpdl