Sen DataFrame içinde üst üste gelen
item
düğümünü oluşturan bir fonksiyon oluşturabilir
:
def func(row):
xml = ['<item>']
for field in row.index:
xml.append(' <field name="{0}">{1}</field>'.format(field, row[field]))
xml.append('</item>')
return '\n'.join(xml)
Sonra axis=1
boyunca işlevini uygulayın.
def to_xml(df, filename=None, mode='w'):
def row_to_xml(row):
xml = ['<item>']
for i, col_name in enumerate(row.index):
xml.append(' <field name="{0}">{1}</field>'.format(col_name, row.iloc[i]))
xml.append('</item>')
return '\n'.join(xml)
res = '\n'.join(df.apply(row_to_xml, axis=1))
if filename is None:
return res
with open(filename, mode) as f:
f.write(res)
pd.DataFrame.to_xml = to_xml
Sonra xml yazdırabilirsiniz:
>>> print '\n'.join(df.apply(func, axis=1))
<item>
<field name="field_1">cat</field>
<field name="field_2">15,263</field>
<field name="field_3">2.52</field>
<field name="field_4">00:03:00</field>
</item>
<item>
<field name="field_1">dog</field>
<field name="field_2">1,652</field>
<field name="field_3">3.71</field>
<field name="field_4">00:03:47</field>
</item>
...
hmmm to_xml görünüyor garip bir ihmal olduğunu to_html var, to_json vb Belki de bu iyi bir geliştirme isteği olur. –
XML bunu yapmak için yeterince standartlaştırılmış mı? – Jeff
@Jeff Muhtemelen hayır, Viktor'un tarifi muhtemelen bir kullanıcının özel ihtiyaçlarına göre ayarlanmış olabilir. –