pandas, how to filter dataframe by column value

I have a DataFrame like this

>>> df
    id    name    score    subject
    0001   'bob'    100    'math'
    0001   'bob'     67    'science'
    0001   'bob'     63    'bio'
    0002  'jack'     67    'math'
    0002  'jack'     98    'science' 
    0002  'jack'     90    'bio'
    0003  'jack'     60    'math'
    0003  'jack'     78    'science' 
    0003  'rose'     87    'bio'

I want to filter every id's data into a new DataFrame and write to an Excel file based on its id. So, the above df will be filtered into 3 DataFrames whose ids are 0001, 0002 and 0003, and all the DataFrames will be written to individual excel files.

Answers


First, get a list of the unique ID values

uniquevalues = np.unique(df[['id']].values)

Then iterate on it and export each dataframe with those IDs in a CSV file

for id in uniquevalues:
    newdf = df[df['id'] == id]
    newdf.to_csv("dataframe "+id+".csv", sep='\t')

If you have only those three IDs, then you can just pass the for and do the same thing manually like

newdf = df[df['id'] == "0001"]
newdf.to_csv("dataframe0001.csv", sep='\t')

IIUC, on your example you can just filter the dataframe by id with:

df1 = df[df['id'] == 0001]

and the same for other id values.


Needed to convert df row to (str) first, otherwise kept getting dtype errors.

df['sample']=df['sample'].apply(str) 

Need Your Help

mysql: Duplicate entry '0' for key 'PRIMARY' and bizarre ID behavior

mysql sql indexing mysql-error-1062

See log below. (Snipped just for brevity; unsnipped @ http://pastebin.com/k9sCM6Ee)

how do I create a VM on South Brazil on Azure?

azure

When creating a VM on azure portal, the location option does not list South Brazil, but the Azure pricing page lists South Brazil prices.