Ich glaube, Sie Counter
und most_common
verwenden können, aber mein Format von Eingang ist ein bisschen anders - es list
von tuples
ist:
df = pd.DataFrame({'a':[[('a',1.0),('b',6.0),('c',10.0)],
[('a',1.0),('b',6.0) ],
[('a',1.0),('x',6.0),('e',5)]]})
print (df)
a
0 [(a, 1.0), (b, 6.0), (c, 10.0)]
1 [(a, 1.0), (b, 6.0)]
2 [(a, 1.0), (x, 6.0), (e, 5)]
print (df.a.apply(lambda x: Counter(dict(x)).most_common(1)[0][0]))
0 c
1 b
2 x
Name: a, dtype: object
Es war nicht einfach, und ich habe another question zu fragen.
Sie benötigen:
import ast
df = pd.DataFrame({'a':[['(a,1.0),(b,6.0),(c,10.0)']]})
print (df)
a
0 [(a,1.0),(b,6.0),(c,10.0)]
df.a = df.a.str[0].str.replace(r'\((\w+),', r"('\1',").apply(lambda x: ast.literal_eval(x))
print (df)
a
0 ((a, 1.0), (b, 6.0), (c, 10.0))
print (df.a.apply(lambda x: Counter(dict(x)).most_common(1)[0][0]))
0 c
Name: a, dtype: object
Ok danke für deine Antwort. Mein df ist dasselbe wie: 'df = pd.DataFrame ({'a': [['(a, 1.0), (b, 6.0), (c, 10.0)']]})' – Zop
Phooo, es ist sehr kompliziert. Hauptproblem ist das gleiche Trennzeichen ',' zwischen 'Tupel' und zwischen' Werten' – jezrael
OK, jetzt ändern wir das Format: 'df = pd.DataFrame ({'a': [['(a, 1.0) :(b, 6.0) :(c, 10.0) ']]}) ' – Zop