我正在使用pandas中的“read_xml“函数阅读xml文件。
XML文件<resources>
<string name="label_generate_transfer_code">Generate Transfer Code</string>
<string name="label_select_all">Select All</string>
<string name="label_sequence_number">Sequence Number: %1$s</string>
<string name="label_serial_number">Serial Number: %1$s</string>
<string name="label_model">Model: %1$s</string>
<string name="transfer_confirmation_feature_item">• %1$s</string>
<string name="label_current">(Current)</string>
<string name="label_primary_display">Primary Display</string>
<string name="label_secondary_display">Secondary Display</string>
<string name="label_pcm">PCM</string>
<string name="label_receiver">Receiver</string>
<string name="label_not_available">N/A</string>
<string name="label_menu">Menu</string>
<string name="label_activations">Activations</string>
<string name="label_activations_title">Activation Input Method</string>
</resources>
这就是我正在做的读取xml文件。local_xml_frame = pd.read_xml(xml_file_path,xpath=".//string")
在阅读xml文件时,pandas正在将“N/A”字符串值转换为NaN”。
我浏览了官方文档,其中指出“数据或列的数据类型。例如'a':np.float64,'b':np.int32,'c':'Int 64'}“将str或object与适当的na_values设置一起使用,以保留而不解释dtype"。如果指定了转换器,则将应用转换器而不是dtype转换。”
我无法理解如何使用突出显示的信息来避免将“N/A”转换为NaN。
有人能给我提供这个问题的确切解决方案吗?
1条答案
按热度按时间iklwldmw1#
另一种解决方法是手动解析xml文件,然后将其转换为csv,然后使用
pd.read_csv
再次读取,让Pandas推断数据类型:输出:
pd.read_csv
函数没有参数na_values
,keep_default_na
或na_filter
。但是在pd.read_xml
的文档中,我们可以读取dtype
参数:dtype类型名称或列-〉类型的dict,可选
数据或列的数据类型。例如'a':np.float64,'b':np.int32,'c':'Int 64'}使用str或object以及适当的na_values设置来保留而不解释dtype。如果指定了转换器,则将应用它们而不是dtype转换。
但是当你尝试像
pd.read_xml(..., dtype=str, na_values=[])
这样的东西时,Pandas会引发TypeError: read_xml() got an unexpected keyword argument 'na_values'
异常。所以文档与代码不一致。可能的解决方法: