我在包含一对值(概念-文档)的熊猫中构建了一个浅层数组
doc1 doc2
concept1 1 0
concept2 0 1
concept3 1 0
我解析XML文件并获取对(概念-doc) 每次有新的配对时,我都会将其添加到熊猫中。
由于进来的对可能包含或可能不包含行和/或列(无论是新概念还是新列)中已经存在的值,所以我使用以下代码:
onp=np.arange(1,21,1).reshape(4,5)
oindex=['concept1','concept2','concept3','concept4',]
ohead=['doc1','doc2','doc3','doc5','doc6']
data=onp
mydf=pd.DataFrame(data,index=oindex, columns=ohead)
#... loop ...
mydf.loc['conceptXX','ep8']=1
效果很好,只是数据帧中的值为1.0而不是1(布尔值),并且当添加新的行和/或列时,其余的值为NaN。我如何避免这种情况。所有添加的值都应为0或1。(注意:其目的是还要有一些用于计算的列,因此我不能仅将所有数据框转换为布尔类型,例如:
mydf=mydf.astype(object)
谢谢。
Alollz注释后的第二次编辑 有关实际问题的更多说明。 我有一个XML文件,可以通过以下方式提供数据:
<names>
<name>michael</name>
<documents>
<document>doc1</document>
<document>doc2</document>
</documents>
</name>
<name>mathieu</name>
<documents>
<document>doc1</document>
<document>docN</document>
</documents>
</name>
</names>
...
我想将此数据传递到数据框以进行计算。基本上,使用以下方式解析XML时,会在不同的文档中出现一些名称:
tree = ET.parse(myinputFile)
root = tree.getroot()
我要在数据框中一一添加新值。 添加时,有时数据框中已经存在一个名称,但是必须添加一个新文档,反之亦然。 我希望可以澄清一下
我正打算将其写为解决方案:
mydf.fillna(0, inplace=True)
mydf=mydf.astype(int)
将所有NaN值更改为0,然后将它们转换为int以避免浮点数。 这有一个消极的一面,因为我可能想要一些文本数据列。在这种情况下会发生错误。