使用Pandas根据列值过滤出行值

时间:2019-12-22 17:26:16

标签: python pandas

如果另一列C的文本为“ ABC”,则如何过滤B列中的行值?在这种情况下,“ google.com”将被过滤掉。

       A      B              C      D
0   True   facebook.com    kxy     19999
1   True   google.com      ABC     21212
2  False   yahoo.com       PoP     3213231

每次在列C中有“ ABC”时,列B中的行值都应附加在列表中。

伪代码:

dataset = pd.read_csv('xyz.csv')

path = []


for value in dataset.C:
    if dataset['C'] == 'abc':
        #append path with row value of Col B 
    else:
        #not append path

4 个答案:

答案 0 :(得分:4)

path = dataset.loc[dataset.C == 'ABC', 'B'].tolist()

将一口气为您提供所需的列表。

答案 1 :(得分:1)

您也可以使用wherelist

path = list(data.B.where(data.C == 'ABC').dropna())
print(path)
# ['google.com']

答案 2 :(得分:0)

inds将是一个具有布尔值的熊猫系列,表示“ C”列中的行值是否等于“ ABC”。

一旦我们知道了,我们就可以对dataset进行子集化,并获取列'B'的值:

inds = dataset['C'] == 'ABC'
list(dataset.loc[inds, 'B'])

答案 3 :(得分:0)

  

直接答覆:

#My ungrouped ggplot is:

t<-t(data.frame(dtt2[,2], dtt2[,7], dtt2[,9], dtt2[,11]))
t<-data.frame(t)

rownames(t)[2]<-"Densidade Relativa"
rownames(t)[3]<-"Dominancia Relativa"
rownames(t)[4]<-"Frequencia Relativa"

specie <- t(data.frame(rep(t[1,], each=3)))
value<-data.frame(b=unlist(t[2:4,],use.names=F))
condition <- data.frame(rep(rownames(t[2:4,]),ncol(t)))
data <- data.frame(specie,condition,value)

data$b<-as.character(data$b)
data$b<-as.numeric(data$b)
colnames(data)[1]<-"Especies"
colnames(data)[2]<-"Parametros"

margins = unit(c(1, 1, 3, 1), 'lines')


  gg<-ggplot(data, aes(reorder(Especies,b), b, fill = Parametros)) +
    geom_col(alpha = 0.8) +
    scale_fill_brewer(palette = "Dark2") +
    theme_bw(16)  +
    coord_flip() +
    xlab("Especies") + ylab("Indice de Valor de Importancia (%)") +
    labs(fill = "Parametros") +
    theme(axis.text.y = element_text(face = "italic",size=10), legend.title=element_blank(),legend.justification = "left" ,legend.text=element_text(size=10),
          axis.text.x= element_text(size=10), axis.title.x=element_text(size=12),
          axis.title.y=element_text(size=12),
          plot.margin=margins,legend.position=c(-0.5,-0.2),legend.direction = "horizontal")


> dtt2
   Estrato                  Especie  n     G UA DA..n.ha. DR.... DoA..G.ha.
1        1     Caryocar brasiliense 46 1.996  6     1.704 15.808      0.074
2        1        Qualea parviflora 77 0.329  6     2.852 26.460      0.012
3        1  Stenocalyx dysentericus 54 0.292  6     2.000 18.557      0.011
4        1       Pouteria ramiflora 18 0.173  4     0.667  6.186      0.006
5        1 Sclerolobium paniculatum 10 0.262  4     0.370  3.436      0.010
6        1       Astronium balansae 10 0.178  5     0.370  3.436      0.007
7        1  Andira cujabensis Benth  7 0.025  5     0.259  2.405      0.001
8        1            Annona Cacans  7 0.036  3     0.259  2.405      0.001
9        1     Hymenaea stilbocarpa  7 0.026  3     0.259  2.405      0.001
10       1   Bowdichia virgilioides  4 0.040  3     0.148  1.375      0.001
11       1       Solanum lycocarpum  4 0.032  3     0.148  1.375      0.001
12       1       Erioteca pubescens  4 0.014  3     0.148  1.375      0.001
13       1     Pterodon emarginatus  2 0.087  2     0.074  0.687      0.003
14       2        Magonia pubescens  3 0.010  3     0.111  1.031      0.000
15       2      Dimorphandra molles  3 0.041  2     0.111  1.031      0.002
16       2    Byrsonima crassifólia  4 0.015  2     0.148  1.375      0.001
17       2        Spondias tuberosa  2 0.041  2     0.074  0.687      0.002
18       2     Maprounea guianensis  3 0.027  2     0.111  1.031      0.001
19       2           Dipteryx alata  3 0.070  1     0.111  1.031      0.003
20       2         Lafoensia pacari  2 0.011  2     0.074  0.687      0.000
21       2        Machaerium opacum  4 0.022  1     0.148  1.375      0.001
22       2     Simarouba versicolor  3 0.024  1     0.111  1.031      0.001
23       2        Palicourea rigida  2 0.020  1     0.074  0.687      0.001
24       2      Curatella americana  2 0.007  1     0.074  0.687      0.000
25       2    Plathymenia foliolosa  1 0.014  1     0.037  0.344      0.001
26       2           Andira inermis  1 0.011  1     0.037  0.344      0.000
27       2         Alibertia edulis  1 0.008  1     0.037  0.344      0.000
28       2  Terminalia brasiliensis  1 0.007  1     0.037  0.344      0.000
29       2       Protium spruceanum  1 0.007  1     0.037  0.344      0.000
30       2    Cecropia pachystachya  1 0.006  1     0.037  0.344      0.000
31       2      Vatairea macrocarpa  1 0.006  1     0.037  0.344      0.000
32       2       Vochysia elliptica  1 0.005  1     0.037  0.344      0.000
33       2       Qualea Grandiflora  1 0.003  1     0.037  0.344      0.000
34       2     Vernonia polysphaera  1 0.003  1     0.037  0.344      0.000
   DoR....  FA.... FR.... IVI....
1   51.857 100.000  7.407  75.072
2    8.561 100.000  7.407  42.428
3    7.599 100.000  7.407  33.563
4    4.503  66.667  4.938  15.627
5    6.804  66.667  4.938  15.178
6    4.624  83.333  6.173  14.233
7    0.661  83.333  6.173   9.239
8    0.932  50.000  3.704   7.041
9    0.678  50.000  3.704   6.787
10   1.046  50.000  3.704   6.125
11   0.827  50.000  3.704   5.906
12   0.364  50.000  3.704   5.442
13   2.273  33.333  2.469   5.430
14   0.263  50.000  3.704   4.998
15   1.055  33.333  2.469   4.555
16   0.392  33.333  2.469   4.235
17   1.067  33.333  2.469   4.223
18   0.706  33.333  2.469   4.206
19   1.811  16.667  1.235   4.076
20   0.290  33.333  2.469   3.446
21   0.565  16.667  1.235   3.174
22   0.611  16.667  1.235   2.876
23   0.507  16.667  1.235   2.429
24   0.179  16.667  1.235   2.101
25   0.365  16.667  1.235   1.943
26   0.283  16.667  1.235   1.861
27   0.199  16.667  1.235   1.777
28   0.186  16.667  1.235   1.764
29   0.174  16.667  1.235   1.752
30   0.162  16.667  1.235   1.740
31   0.151  16.667  1.235   1.729
32   0.140  16.667  1.235   1.718
33   0.083  16.667  1.235   1.661
34   0.083  16.667  1.235   1.661

出于理解目的:

首先获取C =“ ABC”所在的行

filtered_values = dataset.loc[dataset["C"]=='ABC']['B'].tolist()

输出:

filtered_rows = dataset.loc[dataset["C"]=='ABC']

filtered_rows

从这些行中仅获得B列的值,然后使用 A B C D 1 True google.com ABC 21212 函数将此系列转换为列表

.tolist()

输出:

filtered_values = filtered_rows["B"].tolist()

filtered_values