Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 移除多余的管道'|';在CSV中附加文件后_Python_Pandas_Dataframe_Csv_Append - Fatal编程技术网

Python 移除多余的管道'|';在CSV中附加文件后

Python 移除多余的管道'|';在CSV中附加文件后,python,pandas,dataframe,csv,append,Python,Pandas,Dataframe,Csv,Append,我有3个数据帧。我需要将它们转换为一个由管道“|”分隔的合并CSV 我需要在append之后按第1列对它们进行排序 但是,当我尝试将最终的df转换为CSV时,出现了空列。如何避免这种情况 将熊猫作为pd导入 输入io df1=pd.DataFrame({ “Column1”:[“键1”、“键2”、“键3”], “Column2':['1100','1100','1100'] }) df2=pd.DataFrame({ “第1列”:[“第1列”、“第2列”、“第3列”、“第1列”、“第2列”、“第

我有3个数据帧。我需要将它们转换为一个由管道“|”分隔的合并CSV

我需要在append之后按第1列对它们进行排序

但是,当我尝试将最终的df转换为CSV时,出现了空列。如何避免这种情况

将熊猫作为pd导入
输入io
df1=pd.DataFrame({
“Column1”:[“键1”、“键2”、“键3”],
“Column2':['1100','1100','1100']
})
df2=pd.DataFrame({
“第1列”:[“第1列”、“第2列”、“第3列”、“第1列”、“第2列”、“第3列”],
“Column2”:['1110','1110','1110','1110','1110','1110','1110'],
“第三栏”:[“xxr”、“xxv”、“xxw”、“xxt”、“xxe”、“xxz”],
“Column4”:[“wer”、“cad”、“sder”、“dse”、“sdf”、“csd”]
})
df3=pd.DataFrame({
“第1列”:[“第1列”、“第2列”、“第3列”、“第1列”、“第2列”、“第3列”],
“Column2”:['1115','1115','1115','1115','1115','1115','1115'],
“第三栏”:[“xxr”、“xxv”、“xxw”、“xxt”、“xxe”、“xxz”],
“第4列”:[“wer”、“cad”、“sder”、“dse”、“sdf”、“csd”],
“第5列”:['xxr'、'xxv'、'xxw'、'xxt'、'xxe'、'xxz'],
“第6列”:['xxr'、'xxv'、'xxw'、'xxt'、'xxe'、'xxz'],
})
打印(df1、df2、df3、sep=“\n”)
输出=io.StringIO()
pd.concat([df1,df2,df3])排序值(“第1列”)\
.to_csv(输出,标题=False,索引=False,sep=“|”)
打印(“csv”,output.getvalue(),sep=“\n”)
输出搜索(0)
df4=pd.read_csv(输出,标题=None,sep=“|”),keep_default_na=False)
打印(“df4”,df4,sep=“\n”)
output.close()
这是我的输出(注意管道“|”):

但是我不需要使用正则表达式(注意管道“|”):


如果你是这个意思的话,我认为你不能直接使用
to_csv()

您可以使用类似于
rstrip()
的内容重写csv输出。不确定“不使用正则表达式”是什么意思,但python的
strip()
不使用正则表达式

以io.StringIO()作为输出的
:
pd.concat([df1,df2,df3])。排序_值('Column1')\
.to_csv(输出,标题=False,索引=False,sep='|')
输出搜索(0)
lines=[line.rstrip('|\n')用于输出中的行]
打印('\n'.连接(行))
输出:

key_1|1100
key_1|1110|xxr|wer
key_1|1110|xxt|dse
key_1|1115|xxr|wer|xxr|xxr
key_1|1115|xxt|dse|xxt|xxt
key_2|1100
key_2|1110|xxv|cad
key_2|1110|xxe|sdf
key_2|1115|xxv|cad|xxv|xxv
key_2|1115|xxe|sdf|xxe|xxe
key_3|1100
key_3|1110|xxw|sder
key_3|1110|xxz|csd
key_3|1115|xxw|sder|xxw|xxw
key_3|1115|xxz|csd|xxz|xxz
或使用真实文件:

output='output.csv'
pd.concat([df1,df2,df3])。排序_值('Column1')\
.to_csv(输出,标题=False,索引=False,sep='|')
将open(输出“r”)作为f:
lines=[line.rstrip('|\n')表示f中的行]
打开(输出“w”)作为f:
f、 写线('\n'.连接(行))

空柱的附加管道是CSV的预期标准管道。为什么要删除它们?因为我要加入3个具有特定CSV格式的表,这些表必须保持不变。并非所有列都显示在每个文件中,我需要保留原始管道格式。仅作介绍,我不会处理此最终数据,我需要以我提到的格式将其上载到特定数据库。因为这些表可能会随时间而更改列,我不确定“字符串”解决方案是否足够灵活。但是你的解决方案非常有趣,我会尝试应用它。非常感谢。
key_1|1100
key_1|1110|xxr|wer
key_1|1110|xxt|dse
key_1|1115|xxr|wer|xxr|xxr
key_1|1115|xxt|dse|xxt|xxt
key_2|1100
key_2|1110|xxv|cad
key_2|1110|xxe|sdf
key_2|1115|xxv|cad|xxv|xxv
key_2|1115|xxe|sdf|xxe|xxe
key_3|1100
key_3|1110|xxw|sder
key_3|1110|xxz|csd
key_3|1115|xxw|sder|xxw|xxw
key_3|1115|xxz|csd|xxz|xxz
key_1|1100
key_1|1110|xxr|wer
key_1|1110|xxt|dse
key_1|1115|xxr|wer|xxr|xxr
key_1|1115|xxt|dse|xxt|xxt
key_2|1100
key_2|1110|xxv|cad
key_2|1110|xxe|sdf
key_2|1115|xxv|cad|xxv|xxv
key_2|1115|xxe|sdf|xxe|xxe
key_3|1100
key_3|1110|xxw|sder
key_3|1110|xxz|csd
key_3|1115|xxw|sder|xxw|xxw
key_3|1115|xxz|csd|xxz|xxz