Aktywne Wpisy

źródło: 1000005257
Pobierz
wscieklizna_irl +52
Stara znowu dała się naciągnąć na przysłowiowe garnki za 10k zabijcie mnie błagam
Skopiuj link
Skopiuj link
źródło: 1000005257
Pobierz
Regulamin
Reklama
Kontakt
O nas
FAQ
Osiągnięcia
Ranking
Mirki, pomocy bo męczę się już jakiś czas z tym i nie mogę znaleźć rozwiązania.
Wszystko wydaję się oczywiste i proste, ale nie działa :D
Mam dwa dataframy : jeden (fdi) z jakimiś tam danymi gdzie jest kolumna powiedzmy kraj1 i kraj2 (w kodzie ISO). Drugi (rel) gdzie indeksem jest właśnie kod ISO kraju a kolumny to udziały procentowe różnych religii.
Chcę dodać do pierwszego zmienną zgodności religii w postaci : suma po wszystkich religiach z (udział w kraju1 * w kraju2) (potem jeszcze pierwiastek z tego, ale to już nieważne).
No i najpierw chciałem tak:
fdi["comrel"]=0
for column in rel.columns:
fdi["comrel"] = fdi["com_rel"] + (rel.iloc[fdi.kraj1].column * rel.iloc[fdi.kraj2].column)
No ale nie działa (coś typy niezgodne), potem kombinowałem coś z typami, dalej nie szło, zrobiłem jeszcze jedną pętle po wierszach fdi i pętla się nie kończyła.
Rozłożyłem to sobie żeby znaleźć błąd, policzyłem sobie już ta zmienna oddzielnie (b) i teraz chcę tylko ją przenieść do tego fdi w taki sposób:
for x in range (1403):
fdi.iloc[x].com_rel = b[x]
Proste przepisywanie, a ciągle pętla w nieskończoność.
fdi.shape to 1404,30
Pewnie rozwiązanie jest banalne, ale uczę się dopiero i jakoś na stacku nie mogłem znaleźć odpowiedzi.
Z góry dzięki.
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
self[name]
@kretson: taka pętla nie ma prawa się wykonywać w nieskończoność, więc pewnie czegoś nie napisałeś, najlepiej pokaż kod (najlepiej cały).
Robię nową kopię df w nowym skrypcie i wystarczy, że zrobię coś takiego, zwykłe przypisanie wartości przez for (bez sensu praktycznego, ale żeby sprawdzić czy działa):
for x in range(1400):
fdi3.iloc[x].com_relig = 5
I jest to samo.
BTW już sobie ogólnie poradziłem z problemem, ale bardzo na około, najlepiej jakby się
Wczytuję csv jako dataframe i potem chcę zrobić to co wyżej.
Pierwszy:
rel2.dtypes
Out[15]: