如何将列名传递给pandas中的参数

问题描述 投票:4回答:1

我正在尝试从dataframe创建xml。我面临的问题是我想将列传递给参数,并且无法正常工作。

    ORDER_NO        1175        1304          1421  
   7283630          2019-12-04  2019-12-10   2019-12-12 
   7283650          2019-12-25  NaN          2019-12-20

我的代码

header = """<ORD>{}</ORD>"""
body ="""
<osi:ORDSTSINF types:STSCDE="{}">
<DTM>{}</DTM>
</osi:ORDSTSINF>
<osi:ORDSTSINF types:STSCDE="{}">
<DTM>{}</DTM>
</osi:ORDSTSINF>
<osi:ORDSTSINF types:STSCDE="{}">
<DTM>{}</DTM>
</osi:ORDSTSINF>"""

for row in df.itertuples():
    with open(f'{row[1]}.xml', 'w') as f:
        f.write(header.format(row[1]))
        f.write(body.format(col[2], row[2], col[3],row[3],col[4],row[4]))

我想在随后的STS = {}处传递列名。

预期输出

<ORD> 7283630</ORD>
<osi:ORDSTSINF types:STSCDE="1175">
<DTM>2019-12-04</DTM>
<osi:ORDSTSINF types:STSCDE="1304">
<DTM>2019-12-10</DTM>
<osi:ORDSTSINF types:STSCDE="1421">
<DTM>22019-12-12</DTM>

如何在python中完成?

python-3.x pandas dataframe itertools
1个回答
0
投票

因为在索引中从0的python计数减去所有值的从1cols[2]的列名中减去cols[1]

cols = df.columns
for row in df.itertuples():
    with open(f'{row[1]}.xml', 'w') as f:
        f.write(header.format(row[1]))
        f.write(body.format(cols[1], row[2], cols[2],row[3],cols[3],row[4]))

<ORD>7283630</ORD>
<osi:ORDSTSINF types:STSCDE="1175">
<DTM>2019-12-04</DTM>
</osi:ORDSTSINF>
<osi:ORDSTSINF types:STSCDE="1304">
<DTM>2019-12-10</DTM>
</osi:ORDSTSINF>
<osi:ORDSTSINF types:STSCDE="1421">
<DTM>2019-12-12</DTM>
</osi:ORDSTSINF>
© www.soinside.com 2019 - 2024. All rights reserved.