python - 基于两个 Pandas 列创建一个范围

标签 python pandas range

我有以下数据集

Out[121]: 
   a  b
0  1  3
1  2  4

并希望生成一个包含 a 和 b 中数字范围的列。所以:

Out[128]: 
   a  b      range
0  1  3  [1, 2, 3]
1  2  4  [2, 3, 4] 

最佳答案

您可以为此使用列表理解。您可能会发现这比 pd.DataFrame.apply 更有效。

df['range'] = [list(range(i, j+1)) for i, j in df.values]

结果:

   a  b      range
0  1  3  [1, 2, 3]
1  2  4  [2, 3, 4]

之所以可行,是因为:

  • 您可以直接通过列表分配系列。
  • df.values 返回数据框的 numpy 数组表示形式,当您迭代时,它会返回每一行的内容。
  • 如果您有更多列,只需使用 df[['a', 'b']].values

关于python - 基于两个 Pandas 列创建一个范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49619842/

相关文章:

python - 在 SQLAlchemy 中删除左外连接右侧的 NULL

python - 为什么使用形状为 (x,) 而不是 (x,1) 的数组?

python - 如何在python中将0.5四舍五入到最接近的整数?

angular - *ngFor 用于组件中没有数据属性的数据范围

unicode - 为什么 Unicode 被限制为 0x10FFFF?

ruby - 计算ruby中两个范围(日期)数组的交集

python - 将自定义 python 函数传递到 Tornado 模板中

python - 创建受约束的随机数?

python - 如果所有列都包含特定模式,请选择 Pandas 数据框中的行

python - 如何根据二级标准从多索引 pandas.Series 对象中提取?