簡體   English   中英

如何更清晰地對熊貓中的數據進行分段?

[英]How to segment data in pandas more cleanly?

我有導入熊貓的稅收數據,我想查看數據的某些部分,以便可以分析那部分人口。 我這樣做的方法是像這樣制作新的數據幀

new_df = old_tax_df[(old_tax_df.var_1 == 1) & (old_tax_df.var_2 == 1)]

有沒有一種方法可以在不制作數據幀的情況下使代碼更整潔?

讓我們嘗試.query方法,它更具可讀性:

new_df = old_tax_df.query('var_1 == 1 and var_2 == 1')

或正如MaxU在評論中指出的那樣。

new_df = old_tax_df.query("var_1 == var_2 == 1")

也會工作。

一種方法-

old_tax_df[(old_tax_df[['var_1','var_2']]==1).all(1)]

樣品運行-

In [68]: old_tax_df
Out[68]: 
   var_1  var_2  var_3  var_4
0      0      1      0      1
1      1      1      0      2
2      2      1      1      1
3      1      0      1      2
4      1      2      0      2
5      2      0      1      1
6      2      0      0      2
7      0      2      2      0
8      1      1      0      1
9      2      1      1      1

# Original code
In [69]: old_tax_df[(old_tax_df.var_1 == 1) & (old_tax_df.var_2 == 1)]
Out[69]: 
   var_1  var_2  var_3  var_4
1      1      1      0      2
8      1      1      0      1

# Proposed code
In [70]: old_tax_df[(old_tax_df[['var_1','var_2']]==1).all(1)]
Out[70]: 
   var_1  var_2  var_3  var_4
1      1      1      0      2
8      1      1      0      1

# Alternative using `.eq` to replace `==1`
In [76]: old_tax_df[old_tax_df[['var_1','var_2']].eq(1).all(1)]
Out[76]: 
   var_1  var_2  var_3  var_4
1      1      1      0      2
8      1      1      0      1

使用.groupby

您可以使用groupby方法,然后訪問組。

groups = df.groupby(['var_1', 'var_2', 'var_3', 'var_4'])
groups.get_group((2, 0, 0, 2))

這是一種基於其中的值將一個數據幀分割為多個數據幀的方法。

使用.loc

df.set_index(['var_1', 'var_2', 'var_3', 'var_4'], inplace=True)
df.loc[2, 0, 0, 2]

將產生相同的結果,除了現在將在變量字段上對數據幀建立索引。

有關此主題的更多信息,請參見“熊貓的索引和選擇數據”文檔頁面。

暫無
暫無

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

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