Python 如何基于dataframe列的唯一值创建文本文件?

Python 如何基于dataframe列的唯一值创建文本文件?,python,excel,pandas,export,concatenation,Python,Excel,Pandas,Export,Concatenation,我有一个excel表格,有两列,分别叫做('NE'和'Interface'),我想做的是:用每个接口值编辑一个.txt文件模板(我已经有了,我在下面显示了它)。然后连接属于同一组“NE”的txt文件 这是我的excel: 这是我的txt文件模板,我想用excel的接口值更改“接口”: conf t **$interface** no service-policy input QOS-IN_ACCESS end conf t no policy-map QOS-IN_ACCESS pol

我有一个excel表格,有两列,分别叫做('NE'和'Interface'),我想做的是:用每个接口值编辑一个.txt文件模板(我已经有了,我在下面显示了它)。然后连接属于同一组“NE”的txt文件

这是我的excel:

这是我的txt文件模板,我想用excel的接口值更改“接口”:

conf t
**$interface**   
no service-policy input QOS-IN_ACCESS
end
conf t
no policy-map QOS-IN_ACCESS 
policy-map QOS-IN_ACCESS 
class DSCP_VOIX_SIG 
set mpls experimental imposition 5 
set qos-group 5 
end
conf t
**$interface**   
service-policy input QOS-IN_ACCESS
end
这是我的代码:(我已经连接了这些文件,我需要做的是将它们放在一组NE中)

从字符串导入模板
作为pd进口熊猫
df3=pd.read\u excel(r“C:\Users\audit\u policymap.xlsx”)
打开(r“C:\Users\audit\u policymap.txt”)作为fp:
模板=模板(fp.read())
content2=''
content3=“”
对于范围内的i(len(df3)):
文件名=df.loc[i,“NE”]+'\u output.txt'
以fp形式打开(文件名为“w”):
内容=模板.substitute(接口=df.loc[i,“接口”])
如果df.loc[i,“NE”]==df.loc[i+1,“NE”]:
content2=str(content2)+'\n'+str(content)+'\n'
content3=str(content2)+'\n'
fp.write(content2)
其他:
content2=''
content3=str(content3)+'\n'+str(content)+'\n'
fp.write(内容3)
总结:我想让每个“NE”编辑一个txt文件,并根据其对应的“NE”编辑所有接口。
  • NE
    列上使用。
    • 这将返回一个
      DataFrameGroupBy
      对象,其中
      i
      NE
      中唯一的groupby值,
      g
      是关联的组
    • for循环将遍历
      NE
  • 使用f字符串指定唯一的文件名(例如
    f'{i}\u output.txt'
    • '250002-PEFTTS-2_output.txt'
  • 由于
    g
    中的所有值只属于
    NE
    中的一个唯一值,因此不需要像您在问题中所做的那样检查
    NE
    是否与每一行匹配
  • [str(template.substitute(interface=row))代替g.interface中的行]
    是一种列表理解,对于
    g.interface
    中的每一行,将
    str(template.substitute(interface=row))
    添加到列表中。
    • '\n'.join()
      将列表中的每个项目作为一个由换行符分隔的字符串进行连接
对于df.groupby('NE')中的i,g:#遍历NE中的唯一值
file_name=f'{i}_output.txt'#创建空内容字符串
打开(文件名为“w”)作为fp:#打开文件
content='\n'.join([str(template.substitute(interface=row))代替g.interface中的行])
fp.write(content)#将内容写入文件