我想在www.example.com _csv()的帮助下从我的数据中生成一个.txt输出pd.to。我已经创建了一个包含我数据列的字典,然后我将它转换为pandas df。但是在这一步,以及后续的.to_csv(),我注意到我的中间列的数据从int转换为float。下面是我得到的df:
Type Raw data Clean data
0 Number of Reads: 8.044857e+07 80054190
1 Data Size: 8.044857e+09 8005419000
2 N of fq1: 2.097854e+06 4977
3 N of fq2: 5.575130e+05 211801
4 GC(%) of fq1: 5.042000e+01 50.44
5 GC(%) of fq2: 5.088000e+01 50.88
6 Q20(%) of fq1: 9.662000e+01 96.67
7 Q20(%) of fq2: 9.429000e+01 94.3
8 Q30(%) of fq1: 8.769000e+01 87.74
9 Q30(%) of fq2: 8.429000e+01 84.3
10 Discard Reads related to N: 1.696530e+05
11 Discard Reads related to low qual: 1.971880e+05
12 Discard Reads related to Adapter: 2.753500e+04
字符串
为此,我用这个方法来实现:
data_raw_fq = [raw_reads, data_raw, n_raw_fq1, n_raw_fq2, gc_raw_fq1, gc_raw_fq2,
q20_raw_fq1, q20_raw_fq2, q30_raw_fq1, q30_raw_fq2, discard_n,
discard_low, discard_adapter]
data_clean_fq = [clean_reads, data_clean, n_clean_fq1, n_clean_fq2, gc_clear_fq1,
gc_clear_fq2, q20_clear_fq1, q20_clear_fq2, q30_clear_fq1, q30_clear_fq2,
"", "", ""]
row_names = ["Number of Reads:", "Data Size:", "N of fq1:", "N of fq2:", "GC(%) of fq1:", "GC(%) of fq2:",
"Q20(%) of fq1:", "Q20(%) of fq2:", "Q30(%) of fq1:", "Q30(%) of fq2:",
"Discard Reads related to N:", "Discard Reads related to low qual:",
"Discard Reads related to Adapter:"]
df_data = {
'Type': row_names,
'Raw data': data_raw_fq,
'Clean data': data_clean_fq
}
QC_data = pd.DataFrame.from_dict(df_data)
型
在字典中,这里是所有的数据,我想在df中看到:
data_raw_fq
[80448566, 8044856600, 2097854, 557513, 50.42, 50.88, 96.62, 94.29, 87.69, 84.29, 169653, 197188, 27535]
data_clean_fq
[80054190, 8005419000, 4977, 211801, 50.44, 50.88, 96.67, 94.3, 87.74, 84.3, '', '', '']
型
正如你所看到的,在最后一列中,所有的数据都像我想要的那样出现。有些值是float,有些是int。在中间列中,数字和它们的数据类型是相同的。
你能帮助我,如何实现相同的外观?
谢谢你,谢谢
更新##
所以我发现在我的“原始数据”列表中有int和float,但在“干净数据”中也有int,float和str。因此,当我创建pandas df时,发生了以下情况:
print(QC_data.dtypes)
Type object
Raw data float64
Clean data object
dtype: object
型
我想,为什么不把第二列的dtype也修改为object呢?如果我将第二列转换为object,它仍然保留小数,所以我在df的末尾添加了一个空行,这样我的所有列都包含:int,float和str。因此,我的所有列都被定义为对象。
保存了这个df后,我得到了我想要的外观!
这里需要注意的是,当我想再次读取这个文件时,我必须定义dtype!像这样:
data = pd.read_csv("file.txt", sep="\t", dtype=str)
型
1条答案
按热度按时间o2g1uqev1#
您可以将值转换为字符串并定义格式,即:
字符串
对于您的代码示例
型
应该可以
标签:https://stackoverflow.com/a/20937592/15658660