Bu, here numaralı soruyu sorduğum soruyla ilgili bir sorudur. Burada a) sütunlar için bunu nasıl yapılacağını (aşağıya bakınız) ve b) satırların ve sütunların seçiminin R'de oldukça farklı bir şekilde ele alındığını ve bunun da aynı yaklaşımı satırlar için kullanamayacağımı öğrendiğini öğrendim.Bir veri çerçevesini, dizinlere değil, adlara dayalı bir dizi sütun ve satır seçerek nasıl kesebilirim?
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(10, size=(6, 6)),
columns=['c' + str(i) for i in range(6)],
index=["r" + str(i) for i in range(6)])
c0 c1 c2 c3 c4 c5
r0 4 2 3 9 9 0
r1 9 0 8 1 7 5
r2 2 6 7 5 4 7
r3 6 9 9 1 3 4
r4 1 1 1 3 0 3
r5 0 8 5 8 2 9
sonra kolayca böyle adlarıyla satırlar ve sütunlar seçebilirsiniz:
print df.loc['r3':'r5', 'c1':'c4']
c1 c2 c3 c4
r3 9 9 1 3
r4 1 1 3 0
r5 8 5 8 2
döndürür
Yani böyle bir pandalar dataframe olduğunu varsayalım
Bunu R'de nasıl yapabilirim? Benim arzu satır/sütun dizinleri biliyorsanız, Görünüşe göre bu
df <- data.frame(c1=1:6, c2=2:7, c3=3:8, c4=4:9, c5=5:10, c6=6:11)
rownames(df) <- c('r1', 'r2', 'r3', 'r4', 'r5', 'r6')
c1 c2 c3 c4 c5 c6
r1 1 2 3 4 5 6
r2 2 3 4 5 6 7
r3 3 4 5 6 7 8
r4 4 5 6 7 8 9
r5 5 6 7 8 9 10
r6 6 7 8 9 10 11
gibi dataframe göz önüne alındığında, basitçe yapabilirsiniz:
df[3:5, 1:4]
ama satırları silebilir/böylece benim analiz boyunca sütunlar Adına göre indekse göre seçmeyi tercih ederim.
c1 c2 c3 c4
r1 1 2 3 4
r2 2 3 4 5
r3 3 4 5 6
r4 4 5 6 7
r5 5 6 7 8
r6 6 7 8 9
döndürür
subset(df, select=c1:c4)
hangi ama nasıl ben de aynı anda adıyla satır aralığı seçebilir: bağlantısından ben sütunlar için aşağıdaki çalışacak öğrendik yukarıda?
Bu özel durumda, grep
kullanın, ancak rasgele adlara sahip sütunlara ne dersiniz?
Ve
df[c('r3', 'r4' 'r5'), c('c1','c2', 'c3', 'c4')]
ama gerçek bir dilim kullanmak istemiyoruz.
Evet, should daha kesin ol (sorularımı düzenlerim): w olmalıdır keyfi isimler için ork; Burada olanlar gerçekten ayrıştırmak kolay olurdu :) – Cleb
tamam ben de çok çabuk okudum. Senin ihtiyacın olan şey bu mu? – HubertL
Harika! Evet, bu iyi çalışıyor.Bunu şimdilik öne sürüyorum ve diğer cevapların kalitesine bağlı olarak kabul ediyorum. – Cleb