Сай, у меня есть DataFrame вроде этого:Создание панд столбца DataFrame из выбранных значений из другого столбца
df = pd.DataFrame({'a' : list('abcdefghij'), 'b' : (5*[2] + 5*[3])})
И я хочу, чтобы создать еще один столбец, который содержит эти значения из столбца 'a'
, которые индексируются в колонке 'b'
(5 раз 'c' и 5 раз 'd'). Тогда, казалось бы естественным для меня, чтобы сделать что-то вроде этого:
df['c'] = df['a'].iloc[df['b']]
Но выдает ошибку:
cannot reindex from a duplicate axis
Мой вопрос заключается в
а) как я могу это сделать?
b) Где я могу узнать о фактической механике индексов Панды, в отличие от интуиции?
Я не совсем понимаю, что вы хотите, 'df [df ['a']. Isin (df ['b'])]' вернет значения 'a', которые присутствуют в 'b' но вы, кажется, переписываете «b» с по существу теми же значениями – EdChum
@EdChum Я предполагаю, что присвоение одному столбцу и использование значений для 'a', которые идентичны индексу, были немного обманчивыми. Я изменил вопрос; это имеет смысл? –
Я все еще не понимаю, какой ожидаемый результат вы хотите, если вы просто хотите значения соответствующих столбцов (исключая индексы), вы можете просто использовать '.values':' df ['c'] = df ['a' ] .iloc [df ['b']]. values' – Anzel