将Dataframe转换为CSV仅获取第一行

2024-10-04 09:27:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个文件中有以下一组行:

^{tb1}$

我想将每组索引行转换为CSV并打印到文件

因此,我最终得到一个文件,其中一行用于idx 0,两行用于idx 1,两行用于idx 2

像这样:

文件1
col1、col2、col3、col4
A、 B、C、D

文件2
col1、col2、col3、col4
E、 F,G,H
一、 J,K,L

文件3
col1、col2、col3、col4
M、 N,O,P
Q、 R,S,T

我有这段代码,但它只给出每个索引集的第一行:

for i, dfr in Template.TEMPLATE_DF.iterrows(): 
        fpath = path + '\\' + dfr['tmpl.title'].lower().replace(' ', '_') + '_' + str(dfr['tmpl.id']) + '.csv'
        dfr=pd.DataFrame(data=dfr).transpose()
        dfr.to_csv(fpath, sep=',', encoding='utf-8', na_rep='NULL', index=False)

我错过了什么


Tags: 文件csv代码inforcol2col3col1
1条回答
网友
1楼 · 发布于 2024-10-04 09:27:44

这会将每个分组发送到函数,并将其写入文件。检查fpath,尽管这会发生变化,因为您不再通过iterrows发送行,而是发送数据帧的一部分,所以我使用[0]获取x的第一行,但正如我所说的,不确定它是否有效,因为它不是测试

data='''idx tmpl.id tmpl.title  col3    col4
0   10  title one   C   D
1   20  title two   G   H
1   30  title three K   L
2   40  title four  O   P
2   50  title five  S   T'''

df = pd.read_csv(io.StringIO(data), sep=' \s+', engine='python')
def write_csv(x):
    # print(x['tmpl.title'].iat[0])
    fpath = path + '\\' + x['tmpl.title'].iat[0].lower().replace(' ', '_') + '_' + str(x['tmpl.id'].iat[0]) + '.csv' # this probably isn't correct
    x.transpose()
    x.to_csv(fpath, sep=',', encoding='utf-8', na_rep='NULL', index=False)

# df.groupby(df.index).apply(write_csv)
df.groupby('idx').apply(write_csv)

如果idx不是您的索引,则使用

df.groupby('idx').apply(write_csv)

相关问题 更多 >