2016-04-01 23 views
2

Diyelim ki boş bir panda veri diskim var.Bu iki Python pandası veri çerçevesi komutları arasındaki fark nedir?

import pandas as pd 
m = pd.DataFrame(index=range(1,100), columns=range(1,100)) 
m = m.fillna(0) 

Aşağıdaki iki komut arasındaki fark nedir?

m[2][1] 
m[2].ix[1] # This code actually allows you to edit the dataframe 

İleride başvurmak için yararlı olacaksa daha fazla okuma yapmaktan çekinmeyin.

m[2][1] 
m[2].ix[1] 

Genellikle tek ix, iloc veya loc komutu kullanmalısınız:

+2

related: http://stackoverflow.com/questions/ 20838395/ix-indeksleme-pandalar-serisi – John

+2

Yukarıdakilerin yanı sıra, ilk satırın neden başarısız olabileceğini ve ikincisinin işe yaradığını görmelisiniz: http: //pandas.pydata. org /pandas-docs/stable/indexing.html#indexing-view-versus-copy – EdChum

cevap

3

Kısa cevap (bir nedenle EdChum en linke @ bakınız) muhtemelen bunlardan birini yapamaz gerektiğidir Tüm veri bloğu, istediğiniz zaman hem satır hem de sütun tarafından erişilmesini istediğiniz sıralı bir sütun erişimi değil, burada olduğu gibi satır erişimini izler. Örneğin, 1 ve 2 için örnek kıyasla ters

m.iloc[1,2] 

Not olduğunu ix/iloc/loc tüm sonra sıranın standart sözdizimi sütunu kullanın çünkü. Zincirleme yaptığınız için sözdiziminiz tersine çevrilir ve önce bir veri çerçevesinden (bir dizi olan) bir sütun seçip o diziden bir satır seçmeniz gerekir.

Sizinki gibi basit durumlarda, çoğu zaman önemli olmayacaktır, ancak ix/iloc/loc'un kullanışlılığı, veri çerçevesini karmaşık yollarla "düzenleyebilmeniz" için tasarlanmışlardır (aka ayarlanmış veya değerler ata).

pandas iloc vs ix vs loc explanation?

ve ayrıca standart pandalar belgelerinde: Burada ix/iloc/loc gerçekten iyi açıklaması vardır

http://pandas.pydata.org/pandas-docs/stable/indexing.html

İlgili konular