【问题标题】:Pandas: selecting multiple columns in dataframe by integerPandas:按整数选择数据框中的多列
【发布时间】:2021-07-08 09:15:59
【问题描述】:

假设我有这个数据框:

df = pd.DataFrame({'a' : (1, 2, 3),
                   'b' : (1, 2, 3),
                   'c' : ("one", "two", "three"),
                   'd' : (4, 5, 6),
                   'e' : (4, 5, 6),
                   'f' : (7, 8, 9),
                   'g' : (7, 8, 9),
                   'h' : (7, 8, 9)})

我正在尝试选择第一、第三和第五,直到最后一列。期望的输出是:

   a      c  e  f  g  h
0  1    one  4  7  7  8
1  2    two  5  8  7  8
2  3  three  6  9  9  9

如何使用整数选择多个不连续的列?我尝试了以下方法:

df.iloc[,[0, 3, 5:]]
df.loc[,[0, 3, 5:]]
df.iloc[,[0, 3, 5:len(df.columns)]]
df.loc[,[0, 3, 5:len(df.columns)]]
df.iloc[,[0 + 3 + 5:]]
df.loc[,[0 + 3 + 5:]]
df.iloc[,[0 + 3 + 5:len(df.columns)]]
df.loc[,[0 + 3 + 5:len(df.columns)]]

没有成功

请指教

【问题讨论】:

    标签: pandas dataframe subset


    【解决方案1】:

    使用np.r_ 连接切片器,python 从0 计数,因此对于第三列需要2,从5th 列需要4:

    df = df.iloc[:, np.r_[0, 2, 4:len(df.columns)]]
    print (df)
       a      c  e  f  g  h
    0  1    one  4  7  7  7
    1  2    two  5  8  8  8
    2  3  three  6  9  9  9
    

    【讨论】:

    • 救命稻草,如果您不介意的话,您是否也有通过df.values转换的numpy数据的解决方案?
    • @AgnesLee - 你认为a = df.to_numpy() 然后arr = a[:, np.r_[0, 2, 4:a.shape[1]]]
    【解决方案2】:

    您也可以通过使用您喜欢的any methods 展平列表来做到这一点。

    from pandas.core.common import flatten
    
    df1 = df.iloc[:, list(flatten([[0, 2], range(4, len(df.columns))]))]
    
    df2 = df.iloc[:, np.concatenate([[0, 2], range(4, len(df.columns))])]
    

    【讨论】:

      猜你喜欢
      • 2012-07-02
      • 1970-01-01
      • 2021-10-10
      • 1970-01-01
      • 2016-10-16
      相关资源
      最近更新 更多