解决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' #保留两位小数
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。