Ich habe eine Datenrahmenspalte mit numerischen Werten getrennt durch Kommas (,). Ich versuche, die Summe der Werte in jeder Zelle dieser Spalte zu finden und eine neue Spalte zu erstellen.Summiere Werte in einer Zelle, getrennt durch Komma in einer Datenrahmenspalte mit Python
Input: df:
id Scores
1 10,12
2 11
3 1,2,3
Ausgang erforderlich:
id Scores Sum
1 10,12 22
2 11 11
3 1,2,3 6
Code: Ich habe versucht, eine benutzerdefinierte Funktion zu schreiben, so dass ich Verwendung anwenden Funktion in Python machen
def sum_of_number(listx):
a=[]
n=0
if len(listx)==1:
a=listx
n=a
else:
a=str(listx).split(',')
for i in range(0,len(a)):
n=n+int(a[i])
return n
df['Sum']=df.Scores.apply(sum_of_number)
Aber ich bin nicht in der Lage, das gewünschte Ergebnis zu erhalten.
Edit: Dank Deepspace für die Bereitstellung der Lösung
df['Sum'] = df['Scores'].apply(lambda x: sum(map(float, x.split(','))))
Kann die gleiche mittlere
id Scores Median
1 10,12 11
2 11 11
3 1,2,3 2
Danke der Code funktioniert für den obigen Fall. Aber wenn meine Scores in Dezimalzahlen sind, wird ein Fehler geworfen (sagen wir 0,9,0,8 für ID 1; 0,2 für ID 2 und 0,3,0,2,0,5 für ID 3) Fehler: ValueError: ungültiges Literal für int() mit Basis 10: '0.9 ' – Sam
@Sam so verwenden Sie 'float' anstelle von' int' – DeepSpace
Vielen Dank, es half:) ... Angenommen, ich möchte Mittelwert, Median berechnen. Können Sie vorschlagen, wie es getan werden kann, da Summe eine globale Funktion ist – Sam