解決df.to_csv()中文件名的問題
df.to_csv()中文件名問題
下午做了一下午的拆分數(shù)據(jù)集,將具有相同母核的分子放在一個csv文件中,然后新的csv文件命名是母核的名字,然后拆分出的數(shù)據(jù)集和原始未拆分的數(shù)據(jù)集的數(shù)量總是對不上,我無語了,排查錯誤了很久,我快吐了,最后發(fā)現(xiàn)是出在了下面這一行代碼上:
df_match.to_csv('drawimages/data/diffscaffold/{}.csv'.format(csv_name), index=False)乍一看可能感覺沒問題,確實也是可以存入數(shù)據(jù),但是里面有一個坑,就是 如果現(xiàn)在兩個母核是下面這兩種的時候(這兩個母核只有部分的原子大小寫不一致,但是他們是不一樣的),那么它只會存儲其中一種(大坑)!【原因:Windows會把這兩個雖然大小寫不一致的文件夾認為是一種,且只能存在一種!】
所以會一直導致不能存儲所有的數(shù)據(jù),總是對不上數(shù)據(jù)。。。。

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(輸出路徑,參數(shù)1,參數(shù)2,,參數(shù)3...)
sep=',' ? #以逗號 ,作為數(shù)據(jù)的分隔符,如果分隔符不為逗號,則包含符雙引號”“就會消失。分隔符為Tab時,寫法如下:df.to_csv('new.csv', sep='\t')
na_rep='NA' ? #確實值保存為NA,如果不寫,默認是空 ??
shkiprows= 10 ? # 跳過前十行
usecols=['column1', 'column2', 'column3'] # 讀取指定列
nrows = 10 ? # 只取前10行
chunksize=1000 # 分塊大小來讀取文件(每次讀取多少行),不一次性把文件數(shù)據(jù)讀入內存中,而是分多次
parse_dates = ['col_name'] ? # 指定某行讀取為日期格式
index_col = ['col_1','col_2'] ? # 讀取指定的幾列
error_bad_lines = False ? # 當某行數(shù)據(jù)有問題時,不報錯,直接跳過,處理臟數(shù)據(jù)時使用
na_values = 'NULL' ? # 將NULL識別為空值
header=0 #不保存列名
index=0 ? #不保存行索引
columns=['name'] ? ? #保存索引列和name列
float_format='%.2f' ? ? ? ? #保留兩位小數(shù)總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python腳本實現(xiàn)datax全量同步mysql到hive
這篇文章主要和大家分享一下mysql全量同步到hive自動生成json文件的python腳本,文中的示例代碼講解詳細,有需要的小伙伴可以參加一下2024-10-10
基于python的socket實現(xiàn)單機五子棋到雙人對戰(zhàn)
這篇文章主要為大家詳細介紹了基于python的socket實現(xiàn)單機五子棋到雙人對戰(zhàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06

