如何为保存为CSV的数据帧的非数字列中的每个元素添加引号""

Eka*_*na 7 python pandas

我有DataFrame

id,type,value
1,8,value1
2,2,value2
3,7,value3
4,3,value4
5,10,value5
6,3,value16
Run Code Online (Sandbox Code Playgroud)

我想添加值id以及value要分配报价的CSV文件

"1",8,"value1"
"2",2,"value2"
Run Code Online (Sandbox Code Playgroud)

有什么更好的方法呢

Bou*_*oud 19

将id列转换为字符串列.然后在函数中使用适当的参数to_csv:

import csv
df.id = df.id.astype(str)
df.to_csv('test.txt', index=False, quotechar='"',
                      header=None, quoting=csv.QUOTE_NONNUMERIC)
Run Code Online (Sandbox Code Playgroud)

csv.QUOTE_NONNUMERIC 将引号应用于显然非数字的所有列,如int或float.


piR*_*red 8

转换为字符串并使用 +

df.update('"' + df[['id', 'value']].astype(str) + '"')
print(df)
Run Code Online (Sandbox Code Playgroud)

运用 applymap

df.update(df[['id', 'value']].applymap('"{}"'.format))
print(df)
Run Code Online (Sandbox Code Playgroud)

两者都屈服

    id  type      value
0  "1"     8   "value1"
1  "2"     2   "value2"
2  "3"     7   "value3"
3  "4"     3   "value4"
4  "5"    10   "value5"
5  "6"     3  "value16"
Run Code Online (Sandbox Code Playgroud)

  • @Ekaterina因为在这里你正在做手工工作,在数据框的数据里面加上引号*,这导致1.打破你的数据帧的内容/从它的本质中取走它2.不会阻止to_csv函数仍然使用它的行为将char数据放在引号周围的行为.出于演示原因,您不应该更改数据框,只要演示功能为您完成. (2认同)