by Guest » 12 Jan 2025, 10:36
Ich habe einen Datenrahmen mit Tupeln in Zellen:
Code: Select all
import numpy as np
import pandas as pd
data = np.empty((3, 4), dtype=[('cost', np.int32), ('count', np.int32)])
data['count'] = 0
data['cost'] = [[10, 2, 20, 11],
[12, 7, 9, 20],
[ 2, 14, 16, 18]]
sup = [1, 2, 3]
df = pd.DataFrame(data=data.tolist(), columns=[f'{i+1}' for i in range(len(data[0]))])
df = df.join(pd.DataFrame(sup, columns=['Supplies']))
print(df)
Was folgende Ausgabe ergibt:
Code: Select all
1 2 3 4 Supplies
0 (10, 0) (2, 0) (20, 0) (11, 0) 1
1 (12, 0) (7, 0) (9, 0) (20, 0) 2
2 (2, 0) (14, 0) (16, 0) (18, 0) 3
Als nächstes möchte ich eine Zelle aktualisieren:
aber ich erhalte die Meldung „ValueError: Must have equal len keys and value when set with an iterable
Das gleiche Problem tritt mit der Liste auf.“ . Die Zuweisung von nicht iterierbaren Datentypen wie String oder Integer funktioniert gut.
Als nächstes entferne ich diesen Join:
Code: Select all
df = df.join(pd.DataFrame(sup, columns=['Supplies']))
Ich kann Zellen problemlos Tupeln zuweisen.
Ich vermute, dass das passiert, weil versucht wird, nicht eine einzelne Zelle zu aktualisieren (aber was?)< /p>
Mittlerweile funktioniert die Zuweisung mit df.at gut, aber warum nicht mit df.loc?
Ich habe einen Datenrahmen mit Tupeln in Zellen:
[code]import numpy as np
import pandas as pd
data = np.empty((3, 4), dtype=[('cost', np.int32), ('count', np.int32)])
data['count'] = 0
data['cost'] = [[10, 2, 20, 11],
[12, 7, 9, 20],
[ 2, 14, 16, 18]]
sup = [1, 2, 3]
df = pd.DataFrame(data=data.tolist(), columns=[f'{i+1}' for i in range(len(data[0]))])
df = df.join(pd.DataFrame(sup, columns=['Supplies']))
print(df)
[/code]
Was folgende Ausgabe ergibt:
[code] 1 2 3 4 Supplies
0 (10, 0) (2, 0) (20, 0) (11, 0) 1
1 (12, 0) (7, 0) (9, 0) (20, 0) 2
2 (2, 0) (14, 0) (16, 0) (18, 0) 3
[/code]
Als nächstes möchte ich eine Zelle aktualisieren:
[code]df.loc[1, '1'] = (1,2)
[/code]
aber ich erhalte die Meldung „ValueError: Must have equal len keys and value when set with an iterable
Das gleiche Problem tritt mit der Liste auf.“ . Die Zuweisung von nicht iterierbaren Datentypen wie String oder Integer funktioniert gut.
Als nächstes entferne ich diesen Join:
[code]df = df.join(pd.DataFrame(sup, columns=['Supplies']))
[/code]
Ich kann Zellen problemlos Tupeln zuweisen.
Ich vermute, dass das passiert, weil versucht wird, nicht eine einzelne Zelle zu aktualisieren (aber was?)< /p>
Mittlerweile funktioniert die Zuweisung mit df.at gut, aber warum nicht mit df.loc?
[code]df.at[1, '1'] = (1,2)
[/code]