【问题标题】:Writing dataframe to csv WITHOUT removing commas在不删除逗号的情况下将数据帧写入 csv
【发布时间】:2018-07-11 05:17:33
【问题描述】:

我想将 pandas 数据框写入 csv。 df 的一列具有列表条目,例如[1, 2], [3, 4], ...

当我使用 df.to_csv('output.csv') 并打开输出 csv 文件时,逗号消失了。即csv的对应列有条目[1 2], [3 4], ....

有没有办法在不删除这些列表中的逗号的情况下将数据帧写入 csv?我也尝试过使用 csv.writer。

【问题讨论】:

  • 使用sep 参数到to_csv 例如pd.DataFrame.to_csv(sep='\t') 将使用制表符而不是逗号分隔

标签: python python-3.x pandas csv


【解决方案1】:

df.to_csv('output.tsv', sep='\t')

将使用制表符而不是逗号分隔值。

.tsv 是制表符分隔值文件

【讨论】:

  • 不幸的是,逗号仍在消失。你有什么其他的建议?谢谢。
【解决方案2】:

添加关键字参数quoting=csv.QUOTE_ALL:

import csv
import pandas as pd

data = {"A": [1,2,3], "B": [[11,12],[21,22],[31,32]]}
df = pd.DataFrame(data)
df.index.name='index'

# df
#        A         B
# index             
# 0      1  [11, 12]
# 1      2  [21, 22]
# 2      3  [31, 32]

df.to_csv('test.csv',quoting=csv.QUOTE_ALL)

输出:

"index","A","B"
"0","1","[11, 12]"
"1","2","[21, 22]"
"2","3","[31, 32]"

【讨论】:

  • 感谢您的回复。可悲的是,这对我也不起作用;不知道为什么。
  • 我感觉罪魁祸首是你的DataFramesep='\t' and my solution should both work. Heck, even WITHOUT either of these to_csv()` 应该自动引用其中带有逗号的项目。也许发布您的DataFrame 示例和代码以获取更多详细信息
  • 你是对的。 “列表” [1,2]、[3,4] 等原来是 numpy 数组。
  • 好建议(它添加引号)但对我来说,当原始数据是 np.array 时,它仍然不包括逗号。解决方案是将我的数据框中的值转换为列表,即使没有 quoting=csv.QUOTE_ALL 关键字,逗号也会在 to_csv 期间保留。
【解决方案3】:

我的 csv 文件中也需要逗号。因此,我尝试使用 df 获取它,但徒劳无功。我决定做以下事情。 我首先阅读了分接头分隔的文本文件,然后写入添加了逗号的 csv 文件。 不确定这是否是您真正想要的,但这样您可以在 csv 文件中使用逗号。希望对您有所帮助。

with open('test.txt', newline = '') as cos:
    co_reader = csv.reader(cos, delimiter='\t')
    with open('output.csv', 'w', newline='') as csvfile:
        cowriter = csv.writer(csvfile, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL)
    for co in cog_reader:
        cowriter.writerow(co)

【讨论】:

    猜你喜欢
    • 2018-01-15
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多