2014-01-12 4 views
2

У меня есть dataframe, который выглядит следующим образом. То, что я хотел бы сделать, это создать другой столбец, основанный на VALUE индекса (так что все, что меньше 10, будет иметь другой столбец и будет помечено как «маленький»). Я могу сделать что-то вроде lengthDF[lengthDF.index < 10], чтобы получить нужные значения, но я уверен, как получить дополнительный столбец, который я хочу. Я попытался это Create Column with ELIF in Pandas, но не может заставить его прочитать индекс ...Python Pandas создать столбец на основе значения индекса

   LengthFirst LengthOthers 
0    1   NaN 
4   NaN    1 
9   NaN    1 
13   NaN    1 
17   1    1 
18   NaN    1 
19   NaN    1 
20   1   NaN 
21   1    1 
22   3    4 
23   1   NaN 
24   7    6 
25   1    2 
26   16   19 
27   1    2 
28   24    8 
29   9   12 
30   73   65 
31   15   12 
32   55   60 
33   28   21 
34   29   31 

ответ

2

Что-то вроде этого?

lengthDF['size'] = 'large' 
lengthDF['size'][lengthDF.index < 10] = 'small' 
+0

Да, это работает, спасибо. Я все еще пытаюсь выяснить, как нарезать и индексировать Pandas. Вопрос: есть ли способ сделать это как один лайнер или функцию? Скажем, я хотел сделать сразу три ведра с маленькими, средними и большими? – RedRaven

+2

Вы можете использовать функцию карты. Что-то вроде lengthDF ['size'] = lengthDF.index.map (lambda x: 'small', если x <10 else 'large'). Очевидно, что вместо лямбда вы можете иметь более сложную именованную функцию, которая возвращает любое количество значений (например, «малый», «средний», «большой») на основе того, что такое значение индекса. Если производительность вызывает беспокойство, вы можете захотеть выполнить некоторые тесты: я не уверен, что функция карты векторизована, поэтому может быть быстрее сделать пару проходов, как в ответе выше, а не использовать карту, чтобы сделать это в одном линия. – capitalistcuttle

+0

Проверьте numpy.where, это несколько более краткий способ сделать это. http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html – qwwqwwq

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