[英]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.