【问题标题】:Selecting multiple columns R vs python pandas选择多列 R vs python pandas
【发布时间】:2017-10-05 01:29:10
【问题描述】:

我是一名 R 用户,目前正在学习 Python,我正在尝试将一种选择 R 中使用的列的方法复制到 Python 中。

在 R 中,我可以像这样选择多个列:

df[,c(2,4:10)]

在 Python 中,我知道 iloc 是如何工作的,但我无法在单个列号和一组连续的列号之间进行拆分。

这行不通

df.iloc[:,[1,3:10]]

所以,我将不得不像这样删除第二列:

df.iloc[:,1:10].drop(df.iloc[:,1:10].columns[1] , axis=1)

有没有更有效的方法在 Python 中复制 R 中的方法?

【问题讨论】:

  • df.iloc[:,[1]+range(3,10)]

标签: python r pandas multiple-columns


【解决方案1】:

您可以使用np.r_ 接受混合切片表示法和标量索引并将它们连接为一维数组:

import numpy as np
df.iloc[:,np.r_[1, 3:10]]

df = pd.DataFrame([[1,2,3,4,5,6]])

df

#   0   1   2   3   4   5
#0  1   2   3   4   5   6

df.iloc[:, np.r_[1, 3:6]]

#   1   3   4   5
#0  2   4   5   6

正如np.r_ 产生的那样:

np.r_[1, 3:6]
# array([1, 3, 4, 5])

【讨论】:

  • 谢谢,你是救世主。
  • 你更喜欢 Python 还是 R?
  • @piRSquared 棘手的问题。还没想通。 :)
【解决方案2】:

假设想按名称选择 DataFrame 的多列,考虑 Dataframe df

df = pandas.DataFrame({'A' : ['X', 'Y'], 
                        'B' : 1, 
                        'C' : [2, 3]})

考虑到需要列 A 和 C,只需使用

df[['A', 'C']]
>>>   A  C
   0  X  2
   1  Y  3 

请注意,如果以后想使用它,应将其分配给一个变量。

【讨论】:

    猜你喜欢
    • 2017-06-06
    • 1970-01-01
    • 2016-07-16
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    相关资源
    最近更新 更多