В мультииндексированном кадре данных pandas, как установить значения в столбце, которые полагаются на определенное условие, содержащееся в другом столбце?Условно заменить данные в мультииндексированном фрейме pandas
Итак, у меня есть dataframe, что по существу выглядит следующим образом:
COL1 COL2 COL3 COL4
foo 1 -1.322275 1.107506 1.253344 -0.331782
2 -0.378448 -1.174557 -0.772984 1.476661
3 0.046396 0.904299 0.768654 -0.168910
4 1.396580 1.250713 0.193130 -0.454971
bar 1 -1.453794 -0.393206 -0.922908 0.762605
2 1.375954 -1.304682 0.329339 0.606340
3 -2.911151 0.011083 0.771964 1.620039
4 0.040204 0.887082 -0.893575 1.129227
Вы можете создать с помощью этого кода:
arrays = [np.array(['foo','foo','foo','foo','bar','bar','bar','bar']),
np.array([1,2,3,4,1,2,3,4])]
df = pd.DataFrame(np.random.randn(8,4), index=arrays)
df.columns = ['COL1','COL2','COL3','COL4']
Я хочу, чтобы оценить 'COL1', подрамник «Foo 'для значений больше 0 и заменить (не на месте) значения «COL4» для соответствующих строк с новым значением COL1/1. Затем я хотел бы сделать то же самое снова для subframe «bar», однако вместо этого оценивайте значения «COL2».
Моя фактическая датафрейма огромна, поэтому я пытаюсь найти лучшее решение, чем повторять по строкам. Я смог условно заменить обычный фреймворк данных, но что-то не щелкает, когда я пытаюсь выполнить более продвинутую многоиндексировку и настройку. Я, наверное, делаю вещи более сложными, но я около 45 минут от зарядки стены.
Я не получаю то, что вы меня и 'COL1/1'. Какое значение у вас для COL4 для индекса [foo] [3]? И когда вы оцениваете COL2, вы хотите снова заменить значения COL4? – vmg