所以我试着运行一个我之前开发的代码,它使用熊猫很好地运行了很多次。Pandas的故障?无法覆盖值
我的数据帧有一个自定义索引(具有唯一字符串值作为索引,表示唯一标识符,在这种情况下表示单个蛋白质),文件名称作为列。然后,我使用迭代过程为数据框中的某些单元格分配计数。所以,假设我有一个默认的字典(my_dict)和一个给定的无关键,值是[filename,protein,count]。
我有一个排序列表的文件名和一个排序的蛋白质列表,分别称为all_filenames和all_proteins。
import pandas as pd
df = pd.DataFrame(index=all_proteins, columns=all_filenames)
from collections import defaultdict
my_dict = defaultdict(list)
... (Assign values to the dictionary)
for key in my_dict:
my_filename = my_dict[key][0]
my_protein = my_dict[key][1]
my_count = my_dict[key][2]
df[my_filename][my_protein] = my_count
但是,每当我打印DF,但由于某种原因,返回在此情况下(与适当的索引和文件名)完全空白,同时它不正常。
所以测试,我做了数据框以下:
>>> my_filename in df.columns.tolist()
True
>>> my_protein in df.index.tolist()
True
>>> df[my_filename][my_protein]
nan
>>> my_count
3.0
>>> type(my_count)
<type 'numpy.float64'>
>>>
>>> df[my_filename][my_protein] = my_count
>>> df[my_filename][my_protein]
nan
>>>
我已经试过DF [my_filename] .IX [my_protein],DF [my_filename]的.loc [my_protein],甚至创造一个自定义索引。
通常这个脚本工作正常。我的文件名通常是这样的: beta_maxi070214_08,所以没有空格或不是ASCII字符。
我的蛋白质名称都是标准的,所有的名称都在UniProtKB数据库中,或者是两个蛋白质之间的连接(即ACACA-ACACB)。
我不确定发生了什么事。有没有人有什么建议?
编辑: 下面是一个例子:
>>> my_filename
'beta_orbi080714_05'
>>> my_protein
'ACACA:K1316-ACACA:K1363'
>>> my_count
3.0
>>> type(my_count)
<type 'numpy.float64'>
>>> df[my_filename][my_protein] = my_count
>>> df[my_filename][my_protein]
nan
>>>
什么是my_column?这是伪代码,还是你正在运行的确切代码? my_column在哪里定义? – Parker 2014-10-22 04:45:52
所以我基本上导入一个文件列表,并从文件中提取文件名。在这种情况下,我用一个我知道在列表中的文件来测试它。 例如,'beta_maxi070214_08'是一个字符串和一个文件名,并且是列表all_filenames(也在列中)的一个组件。 – 2014-10-22 04:47:15
你没有回答,什么是my_column?它在哪里定义? – Parker 2014-10-22 04:48:48