Meine ursprünglichen Daten sieht aus wie:Looping durch Datei mit .ix und .isin
SUBBASIN HRU HRU_SLP OV_N
1 1 0.016155144 0.15
1 2 0.015563287 0.14
2 1 0.010589782 0.15
2 2 0.011574839 0.14
3 1 0.013865396 0.15
3 2 0.01744597 0.15
3 3 0.018983217 0.14
3 4 0.013890315 0.05
3 5 0.011792533 0.05
Ich brauche für jeden SubBasin Zahlenwert von OV_N zu ändern:
hru = pd.read_csv('hru.csv')
for i in hru.OV_N:
hru.ix[hru.SUBBASIN.isin([76,65,64,72,81,84,60,46,37,1,2]), 'OV_N'] = i*(1+df21.value[12])
hru.ix[hru.SUBBASIN.isin([80,74,75,66,55,53,57,63,61,41,38,27,26,45,40,34,35,31,33,21,20,17,18,19,23,14,13,8,7,11,6,4,3,5,12]), 'OV_N'] = i*(1+df23.value[12])
hru.ix[hru.SUBBASIN.isin([85,58,78,54,59,51,52,30,28,16,15,77,79,71,70,86,73,68,69,56,67,62,82,87,83,91,89,90,43,36,39,47,32,49,42,48,50,49,29,22,24,25,9,10]), 'OV_N'] = i*(1+df56.value[12])
hru.ix[hru.SUBBASIN.isin([92,88,95,94,93]), 'OV_N'] = i*(1+df58.value[12])
wo df21.value [ 12] ist ein Wert aus einer TXT-Datei Der Code ergibt einen unendlichen Wert von OV_N für alle Unterbereiche, also gehe ich davon aus, dass das Durchlaufen einer Datei mehrere Male geht, aber ich kann keinen Fehler finden, und dieser Code arbeitete vorher mit unterschiedliche Anzahl von Teilbereichen.
Vielen Dank für die Antwort SpeedCoder5. Ich muss nur eine Sache klären. In der Zeile: subbasin_multiplier_ds = pd.Series ([21] * 96), was genau sollte ich in Klammern setzen? Wie ich verstanden habe, meinen Sie, dass ich dort meine Werte multipliziert mit jeder Unterwohnungszahl eingeben muss? –
[21] * 96 ist keine Multiplikation - es ist vielmehr eine pythonische Art, eine Liste zu deklarieren 96 Elemente, alle initialisiert auf 21. subbasin_multipiler_ds Werte enthalten jeweils was auch immer in Wert [12] von txt Dateien für jeden der Datenrahmen df21 gewesen wäre, df23 usw. Die ursprüngliche Frage enthielt 96 Elemente in den .isin-Prüfungen. Wenn jedoch eine unendliche Anzahl von Algorithmen benötigt wird, kann anstelle einer Serie eine Suche nach dem Lookup erforderlich sein. Wenn die Antwort die Frage beantwortet, markieren Sie sie bitte so. – SpeedCoder5
OK, jetzt funktioniert es, danke! –