簡體   English   中英

根據列名自動創建多個 python 數據集

[英]Automatically create multiple python datasets based on column names

我有一個巨大的數據集,其中包含:“ Eas_1 ”、“ Eas_2 ”等列到“ Eas_40 ”和“ Nor_1 ”到“ Nor_40 ”。 我想自動創建多個單獨的數據集,這些數據集包含以相同數字結尾的所有列(按列名編號分組)和粘貼為新列( Bin )中的值的列號。

我的數據框:

df = pd.DataFrame({
"Eas_1": [3, 4, 9, 1],
"Eas_2": [4, 5, 10, 2],
"Nor_1": [9, 7, 9, 2],
"Nor_2": [10, 8, 10, 3],  
"Error_1": [2, 5, 1, 6], 
"Error_2": [5, 0, 3, 2], 
})

我不知道如何創建Bin列並粘貼列名值,但我可以像這樣手動分離數據集:

df1 = df.filter(regex='_1')
df2 = df.filter(regex='_2')

這對我來說需要付出很多努力,而且每次獲得新數據時都必須更改腳本。 這就是我想象的最終結果:

df1 = pd.DataFrame({
"Eas_1": [3, 4, 9, 1],
"Nor_1": [9, 7, 9, 2],
"Error_1": [2, 5, 1, 6], 
"Bin": [1, 1, 1, 1], 
})

提前致謝!

您可以使用.str.extract提取后綴,然后對其進行 groupby :

suffixes = df.columns.str.extract('(\d+)$', expand=False)

for label, data in df.groupby(suffixes, axis=1): 
    print('-'*10, label, '-'*10)
    print(data)

注意要收集您的數據框,您可以執行以下操作:

dfs = [data for _, data in df.groupby(suffixes, axis=1)]

# access the second dataframe
dfs[1]

Output:

---------- 1 ----------
   Eas_1  Nor_1  Error_1
0      3      9        2
1      4      7        5
2      9      9        1
3      1      2        6
---------- 2 ----------
   Eas_2  Nor_2  Error_2
0      4     10        5
1      5      8        0
2     10     10        3
3      2      3        2

暫無
暫無

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

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