簡體   English   中英

Python熊貓無法使用ix獲得一致的結果

[英]Python Pandas Not Getting Consistent Result using ix

我想不通為什么對於相同的請求卻得到不同的答案變量類型。

數據:

df = pandas.DataFrame({'group1': ['a','a','a','b','b','b'],
                       'group2': ['c','c','d','d','d','e'],
                       'value1': [1.1,2,3,4,5,6],
                       'value2': [7.1,8,9,10,11,12]})

    group1  group2  value1  value2
0   a   c   1.1     7.1
1   a   c   2.0     8.0
2   a   d   3.0     9.0
3   b   d   4.0     10.0
4   b   d   5.0     11.0
5   b   e   6.0     12.0

請求#1

In [30]:  df.ix[2]

出[30]:

group1    a
group2    d
value1    3
value2    9
Name: 2, dtype: object

請求#2

In [35]:    `df.ix[(df['value1']==3)]`

Out[35]:
    group1  group2  value1  value2
2   a   d   3   9

因為這兩個操作獲得的變量類型不同,所以無法使用相同的過程來處理結果。 難道我做錯了什么?

熊貓可以根據需要使用多種方法進行索引。 這里查看文檔

使用標量值(例如2)進行選擇,將減小結果的維數(例如,您將獲得一個Series)。 要返回幀,請傳遞一個列表( [2]是單個元素列表)

按位置選擇(第三個元素,元素編號以0開頭)

In [9]: df.iloc[[2]]
Out[9]: 
  group1 group2  value1  value2
2      a      d       3       9

[1 rows x 4 columns]

選擇標簽為2的行

In [10]: df.ix[[2]]
Out[10]: 
  group1 group2  value1  value2
2      a      d       3       9

[1 rows x 4 columns]

一個布爾索引器,該索引為2索引的行產生True(請注意,示例中使用的括號在這里是多余的, df.ix[(df['value1']==3)]做的完全一樣(與這些示例中的.ix.loc )。

In [11]: df.loc[df['value1']==3]
Out[11]: 
  group1 group2  value1  value2
2      a      d       3       9

[1 rows x 4 columns]

與上述相同,使用查詢語法

In [12]: df.query('value1==3')
Out[12]: 
  group1 group2  value1  value2
2      a      d       3       9

[1 rows x 4 columns]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM