Python 熊猫,如何按列值筛选数据帧

Python 熊猫,如何按列值筛选数据帧,python,pandas,Python,Pandas,我有一个这样的数据帧 >>> 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 'j

我有一个这样的数据帧

>>> 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'

我想将每个
id
的数据过滤到一个新的数据框中,并根据其id写入Excel文件。因此,上述
df
将被过滤到3个数据框中,其
id
分别为
0001
0002
0003
,所有数据框都将写入单个Excel文件。

IIUC,在您的示例中,您可以使用以下方法通过
id
过滤数据帧:

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

其他
id
值也是如此。

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

uniquevalues = np.unique(df[['id']].values)
然后对其进行迭代,并在CSV文件中使用这些ID导出每个数据帧

for id in uniquevalues:
    newdf = df[df['id'] == id]
    newdf.to_csv("dataframe "+id+".csv", sep='\t')
如果您只有这三个ID,那么您只需为传递
,然后像

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

需要先将df行转换为(str),否则会不断出现数据类型错误

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

@不客气。如果答案是您想要的,不要忘记将其标记为“最佳答案”,以帮助所有下一个有相同问题的用户。