python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > df.to_csv()中文件名问题

解决df.to_csv()中文件名的问题

作者:HealthScience

这篇文章主要介绍了解决df.to_csv()中文件名的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

df.to_csv()中文件名问题

下午做了一下午的拆分数据集,将具有相同母核的分子放在一个csv文件中,然后新的csv文件命名是母核的名字,然后拆分出的数据集和原始未拆分的数据集的数量总是对不上,我无语了,排查错误了很久,我快吐了,最后发现是出在了下面这一行代码上:

df_match.to_csv('drawimages/data/diffscaffold/{}.csv'.format(csv_name), index=False)

乍一看可能感觉没问题,确实也是可以存入数据,但是里面有一个坑,就是 如果现在两个母核是下面这两种的时候(这两个母核只有部分的原子大小写不一致,但是他们是不一样的),那么它只会存储其中一种(大坑)!【原因:Windows会把这两个虽然大小写不一致的文件夹认为是一种,且只能存在一种!

所以会一直导致不能存储所有的数据,总是对不上数据。。。。

O=C(NCc1ccccc1)c1c(Cc2ccccc2)sc2c1CCOC2

O=C(NCC1CCCCC1)c1c(Cc2ccccc2)sc2c1CCOC2

只需要修改代码为:

for i, core in enumerate(core_list):
    matches = []
    for j, smiles in enumerate(smiles_list):
        mol = Chem.MolFromSmiles(smiles)
        core_mol = Chem.MolFromSmiles(core)
        if mol.HasSubstructMatch(core_mol):
            matches.append(j)
    # 选取包含母核的行,并保存到一个新的csv文件中
    df_match = df.iloc[matches]
    df_match.to_csv('drawimages/data/diffscaffold/{}.csv'.format(i+1), index=False)
    print("{}.csv is done! ".format(i+1))

Pandas学习之to_csv()

用法:

df.to_csv(输出路径,参数1,参数2,,参数3...)

sep=','   #以逗号 ,作为数据的分隔符,如果分隔符不为逗号,则包含符双引号”“就会消失。分隔符为Tab时,写法如下:df.to_csv('new.csv', sep='\t')
na_rep='NA'   #确实值保存为NA,如果不写,默认是空   
shkiprows= 10   # 跳过前十行
usecols=['column1', 'column2', 'column3'] # 读取指定列
nrows = 10   # 只取前10行
chunksize=1000 # 分块大小来读取文件(每次读取多少行),不一次性把文件数据读入内存中,而是分多次
parse_dates = ['col_name']   # 指定某行读取为日期格式
index_col = ['col_1','col_2']   # 读取指定的几列
error_bad_lines = False   # 当某行数据有问题时,不报错,直接跳过,处理脏数据时使用
na_values = 'NULL'   # 将NULL识别为空值
header=0 #不保存列名
index=0   #不保存行索引
columns=['name']     #保存索引列和name列
float_format='%.2f'         #保留两位小数

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文