python dataframe将整数转换为float

时间:2017-05-23 06:29:03

标签: python dataframe

使用我的代码,我将多个文件组合到一个数据帧并将NaN值转换为零。在代码中,我将两个列(基因组和重叠群)组合到一个新列(源),但我的数据帧将列重叠群的某个位置从整数转换为浮点数。我的inputfile看起来像这个

AAA 1 345
AAB 2 344

输出现在如下:

AAA_1.0 345
AAB_2.0 344

我希望像

一样
AAA_1 345
AAB_2 344

由于我的代码很长,我无法将整个代码和所有示例文件放在此站点上,但我可能发生的代码部分如下所示。我希望这足以让某人看到问题所在。

#import contig length
df5bb = pd.read_csv('count_contiglength.out', header=None, delim_whitespace=True, names = ["genome", "contig", "contig_length"])
df5bb['source'] = df5bb.genome.astype(str).str.cat(df5bb.contig.astype(str), sep='_')
df5bb = df5bb.set_index('source')
df5b = pd.merge(df5a, df5bb, how='outer')
df5b['source'] = df5b.genome.astype(str).str.cat(df5b.contig.astype(str), sep='_')

nan_cols = df5b.columns[df5b.isnull().any(axis=0)]
for col in nan_cols:
    df5b[col] = df5b[col].fillna(0).astype(int)

#import contigIDnumbers
df5cc = pd.read_csv('contigID.out', header=None, delim_whitespace=True, names = ["genome", "contig", "contigID"])
df5cc['source'] = df5cc.genome.astype(str).str.cat(df5cc.contig.astype(str), sep='_')
df5cc = df5cc.set_index('source')
df5c = pd.merge(df5b, df5cc, how='right')
df5c['source'] = df5c.genome.astype(str).str.cat(df5c.contig.astype(str), sep='_')

1 个答案:

答案 0 :(得分:2)

我认为合并后您会在NaN列中获得至少一个genome

所以需要再次:

df5b['genome'] = df5b['genome'].fillna(0).astype(int)

检查na type promotions - int转换为float