Создание нового столбца фрейма данных на основе правил в Python Pandas



У меня есть CSV-файл, и я пытаюсь решить свою проблему с пандами. Я решил ее с помощью чистого питона, но я не могу сделать это с пандами.



Мой CSV-файл содержит 5 столбцов. Я хочу создать новый, используя данные одного из других. Содержание столбца [0,1,2,3,4,5]. Итак, основываясь на значении, я хочу сделать следующее:



if value == 0:
cost_new_column = 0
elif value == 1:
cost_new_column = 1000
elif value == 2:
cost_new_column = 2500
...


Сделать это в чистом Python, используя for и if просто. Как я могу сделать это в Пандах?

490   1  

1 ответ:

Я бы построил dict из того, как вы хотите map значения и вызовите map на колонке, например:

In [95]:
df = pd.DataFrame({'a':np.random.randint(0, 6, 20)})
df

Out[95]:
    a
0   5
1   3
2   3
3   5
4   5
5   4
6   0
7   5
8   1
9   0
10  5
11  2
12  4
13  5
14  2
15  5
16  0
17  5
18  4
19  4

In [96]:    
d = dict(zip(range(6), [0,1000,2500,4000,5000,8000]))
d

Out[96]:
{0: 0, 1: 1000, 2: 2500, 3: 4000, 4: 5000, 5: 8000}

In [98]:    
df['new_col'] = df['a'].map(d)
df

Out[98]:
    a  new_col
0   5     8000
1   3     4000
2   3     4000
3   5     8000
4   5     8000
5   4     5000
6   0        0
7   5     8000
8   1     1000
9   0        0
10  5     8000
11  2     2500
12  4     5000
13  5     8000
14  2     2500
15  5     8000
16  0        0
17  5     8000
18  4     5000
19  4     5000

Comments

    Ничего не найдено.