簡體   English   中英

在python中使用列的動態列表按列拆分數據幀

[英]Splitting a data frame by a column using a dynamic list of that columns unique values in python

這里是非常新的python用戶。 我有一個數據框,我試圖通過“級別”列中的任何唯一值來對其進行子集化。 我希望每個子設置結果都在一個列表或自己的數據框中。 在此示例中,我具有1、2、3、4、5級,因此我想要么5個單獨的數據幀,每個數據幀中只有一個唯一值,要么要一個具有5個不同值的列表。 這是數據幀:

使用Python 3.7

import pandas as pd
import numpy as np

data = [['Bill', 21, 'Level 1'], ['Joe', 25, 'Level 1'],['Sam', 22, 'Level 2'],['Ash', 19, 'Level 3'],['Mike', 28, 'Level 3'],['Ang', 20, 'Level 4'],['Paul', 25, 'Level 4'],['Kathy', 29, 'Level 5']]

df = pd.DataFrame(data, columns = ['Name', 'Age', 'Level'])

如果我知道不同級別的名稱,並且可以將其硬編碼為代碼,則可以得到預期的結果。 我的問題是我不總是知道“級別”列中的內容。 該代碼將需要足夠聰明,以檢測不同的級別,然后將其拆分,並將結果保存在數據幀或列表中。 我不太確定該如何開始。

謝謝!

看看是否能解決您的問題

要獲取數據中的所有唯一級別:

df = pd.DataFrame(data, columns = ['Name', 'Age', 'Level'])
levels = list()
levels = df['Level']
levels = set(levels)
print(levels) # gives you all the unique levels (1 to 5)

要獲取每個級別的數據(全部):

data = [['Bill', 21, 'Level 1'], ['Joe', 25, 'Level 1'],['Sam', 22, 'Level 2'],['Ash', 19, 'Level 3'],['Mike', 28, 'Level 3'],['Ang', 20, 'Level 4'],['Paul', 25, 'Level 4'],['Kathy', 29, 'Level 5']]
df = pd.DataFrame(data, columns = ['Name', 'Age', 'Level'])
levels = list()
levels = df['Level']
levels = set(levels)  ## gets unique levels {'Level 1', 'Level 2', 'Level 3', 'Level 4', 'Level 5'}
for l in levels:
    df_level = df.loc[df['Level'] == l]
    print("Data for Level:"+l)
    print(df_level[['Name','Age']])
    print("======================")

產量

Data for Level:Level 4
   Name  Age
5   Ang   20
6  Paul   25
======================
Data for Level:Level 5
    Name  Age
7  Kathy   29
======================
Data for Level:Level 3
   Name  Age
3   Ash   19
4  Mike   28
======================
Data for Level:Level 1
   Name  Age
0  Bill   21
1   Joe   25
======================
Data for Level:Level 2
  Name  Age
2  Sam   22
======================

暫無
暫無

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

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