簡體   English   中英

按行切片 Pandas DataFrame

[英]Slice Pandas DataFrame by Row

我正在處理從 h5 文件作為hdf = pandas.HDFStore('Survey.h5')到 pandas package 加載的調查數據。在這個DataFrame中,所有行都是單個調查的結果,而列是答案針對單個調查中的所有問題。

我的目標是將此數據集縮減為較小的DataFrame ,其中僅包含對某個問題具有特定描述答案的行,即此列中的所有值都相同。 我能夠確定具有這種情況的所有行的索引值,但我找不到如何刪除這些行或僅使用這些行創建新的 df。

In [36]: df
Out[36]:
   A  B  C  D
a  0  2  6  0
b  6  1  5  2
c  0  2  6  0
d  9  3  2  2

In [37]: rows
Out[37]: ['a', 'c']

In [38]: df.drop(rows)
Out[38]:
   A  B  C  D
b  6  1  5  2
d  9  3  2  2

In [39]: df[~((df.A == 0) & (df.B == 2) & (df.C == 6) & (df.D == 0))]
Out[39]:
   A  B  C  D
b  6  1  5  2
d  9  3  2  2

In [40]: df.ix[rows]
Out[40]:
   A  B  C  D
a  0  2  6  0
c  0  2  6  0

In [41]: df[((df.A == 0) & (df.B == 2) & (df.C == 6) & (df.D == 0))]
Out[41]:
   A  B  C  D
a  0  2  6  0
c  0  2  6  0

如果您已經知道索引,則可以使用.loc

In [12]: df = pd.DataFrame({"a": [1,2,3,4,5], "b": [4,5,6,7,8]})

In [13]: df
Out[13]:
   a  b
0  1  4
1  2  5
2  3  6
3  4  7
4  5  8

In [14]: df.loc[[0,2,4]]
Out[14]:
   a  b
0  1  4
2  3  6
4  5  8

In [15]: df.loc[1:3]
Out[15]:
   a  b
1  2  5
2  3  6
3  4  7

如果您只需要獲得最top的行; 你可以使用df.head(10)

使用query來搜索特定條件:

In [3]: df
Out[3]: 
   age family   name
0    1      A   john 
1   36      A  jason 
2   32      A   jane 
3   26      B   jack 
4   30      B  james 

In [4]: df.query('age > 30 & family == "A"')
Out[4]: 
   age family   name
1   36      A  jason 
2   32      A   jane

暫無
暫無

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

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