pandas,如何按列值

时间:2015-12-03 10:40:29

标签: 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'

我想将每个id数据过滤为新的DataFrame,并根据其ID写入Excel文件。因此,上述df将被过滤为3个数据框架,其ids000100020003,并且所有DataFrame将被写入单个Excel文件。

3 个答案:

答案 0 :(得分:9)

首先,获取唯一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,那么您可以通过for并手动执行相同的操作,例如

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

答案 1 :(得分:6)

IIUC,根据您的示例,您只需按id过滤数据框:

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

和其他id值相同。

答案 2 :(得分:0)

首先需要将df行转换为(str),否则会出现dtype错误。

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