python - 如何选择结合了列表和范围的数据框列

标签 python pandas dataframe indexing

请考虑这个 df:

df = pd.DataFrame({'a':[1,2], 'b':[1,2], 'c':[1,2], 'd':[1,2], 'e':[1,2], 'f':[1,2], 'g':[1,2], 'h':[1,2]})

   a  b  c  d  e  f  g  h
0  1  1  1  1  1  1  1  1
1  2  2  2  2  2  2  2  2

如何选择第 1、4 和 5-7 列? 我尝试了什么:

df.iloc[:, [0, 3, np.arange(5,8)]]

ValueError: setting an array element with a sequence.

最佳答案

你可以这样做:

df.iloc[:, [0, 3] + list(range(5,8))]

[0, 3] + list(range(5,8)) 连接 2 个列表,将您的显式列表与从您所需范围派生的列表相结合。

或者,您可以使用 numpy.r为您构建索引数组:

import numpy as np

df.iloc[:, np.r_[0,3,5:8]]

np.r_[0,3,5:8]  # array([0, 3, 5, 6, 7])

这会很有用,例如,如果您有多个范围。

关于python - 如何选择结合了列表和范围的数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49343637/

相关文章:

python - 如何将文本页脚添加到 Altair 图形中?

python - 如何从元组列表中创建变量并将其设置为类?

python - 如何在 pandas 中将 N/A (NaT) 转换为 0

python - pandas 按 Q1 和 Q3 聚合进行分组

python - 尝试交叉两个数据帧,一个带有值,另一个带有 boolean 值

python - Django token 发行和范围

python - 如何修复 `tensorflow` 中的准确度函数?

python - 将 pandas 数据框从按行扩展到按列

python - 如何修复 Python Pandas 中的 "The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()"?

'[<-.data.frame' 中的 R 错误...替换有 # 项,需要 #