【问题标题】:How to export data from multiple data frames and store it in a text file with specific format如何从多个数据框中导出数据并将其存储在具有特定格式的文本文件中
【发布时间】:2020-09-07 17:00:14
【问题描述】:

我有两个数据框,如下所述:

我想从这两个数据框创建一个文件,如下所示。

NR
NR^AI123456^AABC International PVT.Ltd^A1234^A526
Address^AXYZ,1234,Industrial Estate^A123^A
NR^I123457^ABC1 International PVT.Ltd^A1236^A529
Address^AXYZ,1235,Industrial Estate^A129^A
NR^AI123458^AABC2 International PVT.Ltd^A1238^A1000
Address^AXYZ,1236,Industrial Estate^A129^A

任何人都可以帮助我如何使用 Pandas 创建一个文件,其中添加了从由^A 分隔的表中添加的顺序列值。

【问题讨论】:

    标签: python pandas numpy csv


    【解决方案1】:

    假设您的数据框遵循此模式:

    import pandas as pd
    df1 = pd.DataFrame({"nr": ["nr1", "nr2", "nr3"], "name": ["name1", "name2", "name3"], "id": ["id1", "id2", "id3"], "bal": ["bal1", "bal2", "bal3"]})
    df2 = pd.DataFrame({"add": ["add1", "add2", "add3"], "house no": ["house no1", "house no2", "house no3"], "add add": ["add add1", "add add2", "add add3"]})
    

    如果您想将它们写入每个输入行的单个输出行,您可以通过以下方式实现:

    pd.merge(df1, df2, left_index=True, right_index=True).stack().groupby(level=0).apply("^A".join).to_csv(header=False, index=False)
    

    但是您的问题要求将两个数据帧中的记录交错,在这种情况下,一种相对简单的方法是:

    x = df1.stack().groupby(level=0).apply("^A".join).values.tolist()
    y = df2.stack().groupby(level=0).apply("^A".join).values.tolist()
    
    f = open('test.txt', 'w')
    
    for i, z in enumerate(x):
        f.write(f"NR^A{z}\n")
        f.write(f"Address^A{y[i]}\n")
    
    f.close()
    

    生成的输出文件遵循您问题中的格式:

    NR^Anr1^Aname1^Aid1^Abal1
    Address^Aadd1^Ahouse no1^Aadd add1
    NR^Anr2^Aname2^Aid2^Abal2
    Address^Aadd2^Ahouse no2^Aadd add2
    NR^Anr3^Aname3^Aid3^Abal3
    Address^Aadd3^Ahouse no3^Aadd add3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多