【问题标题】:Get a subset of data from one row of Dataframe从 Dataframe 的一行中获取数据的子集
【发布时间】:2017-06-06 18:13:11
【问题描述】:

假设我有一个数据框 df,其中包含“A”、“B”、“C”列 现在我只想提取 df 的第 2 行,并且只提取“B”和“C”列。最有效的方法是什么?

你能告诉我为什么 df.ix[2, ['B', 'C']] 不起作用吗?

谢谢!

【问题讨论】:

    标签: python pandas dataframe indexing


    【解决方案1】:

    考虑数据框df

    df = pd.DataFrame(np.arange(9).reshape(3, 3), list('xyz'), list('ABC'))
    df
    
       A  B  C
    x  0  1  2
    y  3  4  5
    z  6  7  8
    

    如果你想维护一个数据框

    df.loc[df.index[[1]], ['B', 'C']]
    
       B  C
    y  4  5
    

    如果你想要一个系列

    df.loc[df.index[1], ['B', 'C']]
    
    B    4
    C    5
    Name: y, dtype: int64
    

    【讨论】:

    • 谢谢!你能告诉我为什么这不起作用 df.ix[2, ['B', 'C']]?
    • @PythonEdu ix 总是有点令人困惑,这也是为什么它现在在 pandas 0.20 中被弃用的原因。这很令人困惑,因为它试图推断你的意思。该整数是位置还是标签?有时df.ix[2, ['B', 'C']] 的含义可能不明确。或依赖df。所以回答你的问题。我不知道为什么ix 不起作用,因为它取决于您的特定数据框。但是我们不要打扰,因为它已被弃用,你不应该再使用它了。
    【解决方案2】:

    row_2 = df[['B', 'C']].iloc[1]

    # Convert column to 2xN vector, grab row 2 row_2 = list(df[['B', 'C']].apply(tuple, axis=1))[1]

    【讨论】:

      猜你喜欢
      • 2018-01-11
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 2021-08-02
      • 2016-05-09
      相关资源
      最近更新 更多