2017-06-08 2 views
2

Ich habe ein Datenframe mit einer Liste innerhalb einer Spalte und eine andere Spalte mit einem bestimmten ganzzahligen Wert für diese Zeile. Ich möchte diesen Integer-Wert verwenden, um einen bestimmten Wert aus der Liste in der anderen Spalte zu extrahieren:Verwenden Sie eine Ganzzahl in einer Pandas-Datenframe-Spalte, um einen bestimmten Wert aus einer Liste in einer anderen Spalte zu extrahieren

df:

list           val 
1 ['mohamed', 'adam', 'paul', 'dave']   3 
2 ['dave', 'fred']        0 
3 ['john', 'dave', 'jane']      1 
4 ['dave']          0 

diese erstellt wurde:

df = df.loc[df['unsplit_list'].str.contains('dave')] 
df['list'] = df['unsplit_list'].str.split('|') 
df['val'] = df['list'].apply(lambda lst: [i for i, x in enumerate(lst) if 'dave' in x][0]) 
df['val'] = df['val'].astype(int) 

wenn ich versuche, zu erhalten der Wert für dave aus meiner Liste, kommt es mit einem Fehler auf:

df['list'].str[df['val']] 

>> 
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

aber wenn ich tue:

df['list'].str[df[1]] 

dann wäre ich in der Lage, den Wert in der Liste mit dieser ganzen Zahl zu erhalten. Wie kann ich diesen Wert erhalten, den ich will?

Antwort

1

Sie tun können:

df.apply(lambda x: x['list'][x['value']], axis=1) 
1
df['name'] = [row[0][row[1]] for ix, row in df.iterrows()] 
Verwandte Themen