假设您的数据框遵循此模式:
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