Pandas ValueError: Muss gleiche Len -Schlüsseln und Wert habenPython

Python-Programme
Anonymous
 Pandas ValueError: Muss gleiche Len -Schlüsseln und Wert haben

Post by Anonymous »

Ich habe eine Frage zu einer Transformation, die ich zu einem DataFrame Pandas hinzufügen möchte.

Code: Select all

df.columns =  Index(['S', 'HZ', 'Z', 'Demand'], dtype='object')

Ich möchte die folgende Transformation durchführen:

Code: Select all

for s in range(S):
for t in range(HZ):
for z in range(Z):
df.loc[(df['S'] == s) & (df['HZ'] == t) & (df['Z'] == z), 'Demand'] = D[s][t][z]
< /code>
wobei D ein numpy Array mit den entsprechenden Dimensionen ist. Hier ist ein einfaches Beispiel für das, was ich versuche zu tun (mit t = 0, um es einfacher zu machen).    S  HZ  Z  Demand
0   0   0  0       0
1   0   0  1       0
2   0   1  0       0
3   0   1  1       0
4   0   2  0       0
5   0   2  1       0
6   1   0  0       0
7   1   0  1       0
8   1   1  0       0
9   1   1  1       0
10  1   2  0       0
11  1   2  1       0
< /code>
Hier ist D: < /p>
D = [[[1, 2],
[3, 4],
[5, 6]],
[[7, 8],
[9, 10],
[11, 12]]]
< /code>
Und hier ist was ich möchte: < /p>
    S  HZ  Z  Demand
0   0   0  0       1
1   0   0  1       2
2   0   1  0       3
3   0   1  1       4
4   0   2  0       5
5   0   2  1       6
6   1   0  0       7
7   1   0  1       8
8   1   1  0       9
9   1   1  1       10
10  1   2  0       11
11  1   2  1       12
< /code>
Dieser Code funktioniert, aber es ist sehr lang, also habe ich etwas anderes ausprobiert, um die für Schleifen zu vermeiden: < /p>
df.loc[df['HZ'] >= T, 'Demand'] = D[df['S']][df['HZ']][df['Z']]
< /code>
, was den folgenden Fehler erhebt: < /p>
ValueError: Must have equal len keys and value when setting with an iterable
Ich suche, was dieser Fehler bedeutet, wie ich es nach Möglichkeit beheben kann, und wenn nicht möglich, gibt es ein Mittel, um das zu tun, was ich möchte, ohne für Loops zu verwenden?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post