gpt4 book ai didi

python - 获取 2 个 pandas 列的范围列表

转载 作者:太空宇宙 更新时间:2023-11-03 17:36:49 25 4
gpt4 key购买 nike

我有以下 DataFrame(稍微重新格式化):

    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)

但它会导致类型错误:

"cannot convert the series to <type 'int'>", u'occurred at index 0'

我尝试过 df.info(),两列都是 int64 类型。

我想知道是否应该使用类似 df.loc[] 的东西或类似的?或者完全是别的什么?

最佳答案

您应该能够使用apply来做到这一点用于将函数应用于数据框的每一行或每一列。

def bought_range(row):
return range(row.f_bought, row.l_bought)

df['bought_range'] = df.apply(bought_range, axis=1)

结果是:

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
0 [1164, 1165, 1166, 1167, 1168, 1169, 1170, 117...
1 [1188, 1189, 1190]
2 [1192, 1193, 1194, 1195, 1196, 1197, 1198, 119...
3 [1208, 1209, 1210, 1211]
4 []

需要警告的是,Python 的 range 不包括上限:

In [1]: range(3, 6)
Out[1]: [3, 4, 5]

处理(return range(row.f_bought, row.l_bought + 1))并不难,但确实需要考虑在内。

关于python - 获取 2 个 pandas 列的范围列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31106788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com