pandas,如何按列值过滤数据帧

Goi*_*Way 2 python pandas

我有这样的DataFrame

>>> 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'
Run Code Online (Sandbox Code Playgroud)

我想将每个id数据过滤到一个新的DataFrame中,并根据其id写入Excel文件.因此,上述df将被过滤到3个DataFrames它ids0001,0002并且0003,所有的DataFrames将被写入单独的Excel文件.

Tas*_*sos 9

首先,获取唯一ID值的列表

uniquevalues = np.unique(df[['id']].values)
Run Code Online (Sandbox Code Playgroud)

然后迭代它并使用CSV文件中的这些ID导出每个数据帧

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

如果你只有这三个ID,那么你可以for手动传递并做同样的事情

newdf = df[df['id'] == "0001"]
newdf.to_csv("dataframe0001.csv", sep='\t')
Run Code Online (Sandbox Code Playgroud)


Fab*_*nna 6

IIUC,在您的示例中,您可以通过以下方式过滤数据框id:

df1 = df[df['id'] == 0001]
Run Code Online (Sandbox Code Playgroud)

和其他id值相同.