【发布时间】:2017-06-06 18:13:11
【问题描述】:
假设我有一个数据框 df,其中包含“A”、“B”、“C”列 现在我只想提取 df 的第 2 行,并且只提取“B”和“C”列。最有效的方法是什么?
你能告诉我为什么 df.ix[2, ['B', 'C']] 不起作用吗?
谢谢!
【问题讨论】:
标签: python pandas dataframe indexing
假设我有一个数据框 df,其中包含“A”、“B”、“C”列 现在我只想提取 df 的第 2 行,并且只提取“B”和“C”列。最有效的方法是什么?
你能告诉我为什么 df.ix[2, ['B', 'C']] 不起作用吗?
谢谢!
【问题讨论】:
标签: python pandas dataframe indexing
考虑数据框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
【讨论】:
ix 总是有点令人困惑,这也是为什么它现在在 pandas 0.20 中被弃用的原因。这很令人困惑,因为它试图推断你的意思。该整数是位置还是标签?有时df.ix[2, ['B', 'C']] 的含义可能不明确。或依赖df。所以回答你的问题。我不知道为什么ix 不起作用,因为它取决于您的特定数据框。但是我们不要打扰,因为它已被弃用,你不应该再使用它了。
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]
【讨论】: