Lassen Sie uns sagen, ich habe folgende DatenFilter Pandas Datenrahmen von String-Länge innerhalb der Gruppe
import pandas as pd
df = pd.DataFrame(data=[[1, 'a'], [1, 'aaa'], [1, 'aa'],
[2, 'bb'], [2, 'bbb'],
[3, 'cc']],
columns=['key', 'text'])
key text
0 1 a
1 1 aaa
2 1 aa
3 2 bb
4 2 bbb
5 3 cc
Was ich möchte Gruppe tun, ist durch die key
Variable und die Daten durch die Länge der text
innerhalb jeder Gruppe sortieren und am Ende mit einem einzigen Series
von Indexwerten, um den Datenrahmen neu zu indizieren. Ich dachte, ich nur so etwas tun könnte:
df.groupby('key').text.str.len().sort_values(ascending=False).index
Aber es sagte, ich brauche apply
zu verwenden, so dass ich versuchte, dies:
df.groupby('key').apply(lambda x: x.text.str.len().sort_values(ascending=False).index, axis=1)
Aber das sagte mir, dass lambda
ein unerwartetes Stichwort bekommt: axis
.
Ich bin relativ neu zu Pandas, also bin ich nicht sicher, wie man das macht. Mein Ziel ist es auch, die Daten einfach zu deduplizieren, so dass ich für jeden key
den Wert mit dem längsten Wert von text
behalten kann. Die erwartete Ausgabe lautet:
key text
1 1 aaa
4 2 bbb
5 3 cc
Wenn es ein einfacherer Weg, dies zu tun, als was ich bin versucht, ich bin so gut, dass offen.
es genagelt, Vielen Dank! – brittenb
Gern geschehen und danke. –