我有像这样的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个数据框架,其ids
为0001
,0002
和0003
,并且所有DataFrame将被写入单个Excel文件。
答案 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)