2014-01-23 6 views
0

У меня есть кадр данных Pandas, как показано ниже. Как я могу объединить значения round и square под shape Серия как other? (В терминологии R, я хочу, чтобы объединить уровни shape фактора round и square на новый уровень меченого other.)Pandas: объединение значений серии

df = pd.DataFrame({'id' : range(1,9), 
        'code' : ['one', 'one', 'two', 'three', 
           'two', 'three', 'one', 'two'], 
        'shape': ['round', 'triangular', 'triangular','triangular','square', 
             'triangular','round','triangular'], 
        'amount' : np.random.randn(8)}, columns= ['id','code', 'shape', 'amount']) 
df 
    id code  shape amount 
0 1 one  round -0.187789 
1 2 one triangular 1.286208 
2 3 two triangular 0.171734 
3 4 three triangular 0.394471 
4 5 two  square -0.009613 
5 6 three triangular 0.413767 
6 7 one  round 1.264730 
7 8 two triangular 0.516499 

ответ

2

это то, что вы имеете в виду?

df.loc[df['shape'].isin(['round', 'square']), 'shape'] = 'other' 

(отредактирован после @ предложение TomAugspurger в)

+0

да, я так считаю. Серия Pandas не имеет уровней, поэтому мне не нужно беспокоиться о снижении уровней ('round' и' square'), правильно? – Rhubarb

+0

Это строки, поэтому я не думаю, что вам следует беспокоиться – mkln

+1

Вы можете изменить это на 'df.loc [df ['shape']. Isin (['round', 'square']), 'shape' ] = 'other'', чтобы избежать возможной установки ошибки копирования. Кажется, здесь не проблема, но лучше избегать привязанного назначения. – TomAugspurger

Смежные вопросы