Я работаю с большим набором данных, но для упрощения я буду использовать более простой пример (некоторые строки которого были удалены для очистки набора данных), чтобы проиллюстрировать проблему. Представьте, что у меня есть этот набор данных:
Code_0 Code_1 Code_3 Code_4 Code_5 Code_6 Code_7
3 1 1 3 0 0 1 1
9 0 0 0 0 0 0 1
10 4 2 3 1 1 0 0
15 0 3 0 5 1 1 1
Итак, что я хочу сделать в каждой строке: если Code_5 равен единице, а code_0 больше 0, то к code_0 будет добавлена единица. С другой стороны, если code_6 == 1 и code_1 больше 0, то к code_1 будет добавлена единица. Наконец, если code_7 == 1 и code_3 больше 0, то к code_3 будет добавлено 1. Поэтому я хочу получить следующее:
Code_0 Code_1 Code_3 Code_4 Code_5 Code_6 Code_7
3 1 2 4 0 0 1 1
9 0 0 0 0 0 0 1
10 5 2 3 1 1 0 0
15 0 4 0 5 1 1 1
Я сделал этот код, но он не работает. Во всяком случае, я думаю, что, возможно, есть лучший вариант.
def add_one(x):
if x == df_data['Code_5']:
if x == 1 and df_data['Code_0'] > 0:
df_data['Code_0'] = df_data['Code_0'] + 1
if x == df_data['Code_6']:
if x == 1 and df_data['Code_1'] > 0:
df_data['Code_1'] = df_data['Code_1'] + 1
if x == df_data['Code_7']:
if x == 1 and df_data['Code_2'] > 0:
df_data['Code_2'] = df_data['Code_2'] + 1
df_data['Code_0'] = df_data['Code_5'].apply(add_one)
df_data['Code_1'] = df_data['Code_6'].apply(add_one)
df_data['Code_2'] = df_data['Code_7'].apply(add_one)
Кто-нибудь может мне помочь, пожалуйста?