У меня есть следующие DataFrame (переформатирован немного):Получение списка диапазона 2 панд столбцов
f_name l_name n f_bought l_bought
0 Abraham Livingston 24 1164 1187
1 John Brown 4 1188 1191
2 Samuel Barret 16 1192 1207
3 Nathan Blodget 4 1208 1212
4 Bobby Abraham 1 1212 1212
Я хочу, чтобы создать столбец, bought
, то есть список range(df[f_bought], df[l_bought])
.
Я пробовал:
def getRange(l1,l2):
r = list(range(l1, l2))
df.apply(lambda index: getRange(df['f_bond'], df['l_bond']),axis=1)
, но это приводит к TypeError:
"cannot convert the series to <type 'int'>", u'occurred at index 0'
Я пробовал df.info(), и оба столбца типа int64.
Мне интересно, если я должен использовать что-то вроде df.loc[]
или подобное? Или что-то еще?
Это очень близко, но при этом возникает атрибут AttributeError: «Объект« Серии »не имеет атрибута« l_bought ». Есть идеи? – nocoolsoft
Это не дает мне сообщение об ошибке на [моей установке] (http://imgur.com/xmbwutu) (Python 2.7, pandas 0.16.1). Сообщение означает, что 'Series', отправленный' buy_range' (который должен быть строкой вашего DataFrame), не имеет индекса/столбца, называемого 'l_bought'. Проверьте наличие опечаток в коде и именах столбцов. Вы также можете поместить 'print (row.index)' just before' return range (... ', чтобы узнать, что получает' purchase_range'. – LondonRob
@LondonRob +1 для вашего решения, хотя вы не хотите включать максимальное число для полного диапазона? – kennes