【问题标题】:pandas to_csv header vs columns熊猫 to_csv 标题与列
【发布时间】:2021-12-15 04:11:38
【问题描述】:

看来 pandas.to_csv 函数有两个属性,它们做同样的事情。

也许我错过了什么。

来自文档:

列:序列,可选

要写的列

header : 布尔值或字符串列表,默认为 True

写出列名。如果给出一个字符串列表,则假定它是列名的别名

当给出列列表时,他们将列按我指定的顺序排列。

import pandas as pd
from StringIO import StringIO

df = pd.DataFrame({"foo":[1,2], "bar":[1,2]})

sio = StringIO()
df.to_csv(sio)
sio.getvalue()
',bar,foo\n0,1,1\n1,2,2\n'

sio = StringIO()
df.to_csv(sio, header=['foo', 'bar'])
sio.getvalue()
',foo,bar\n0,1,1\n1,2,2\n'
sio.close()

sio = StringIO()
df.to_csv(sio, columns=['foo', 'bar'])
sio.getvalue()
',foo,bar\n0,1,1\n1,2,2\n'
sio.close()

如果我只想对列顺序进行排序,使用哪一个是正确的

我认为这两个命名属性不同的唯一情况是如果我想选择列,但将标题写入 csv 文件。

这意味着使用columns=['foo', 'bar'] 是正确的选择。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用列,列顺序改变,包括标题和值。

    df = pd.DataFrame({"foo":[1,2], "bar":[1111,2111]})
    sio = StringIO()
    df.to_csv(sio, columns=['foo', 'bar'])
    sio.getvalue()
    ',foo,bar\n0,1,1111\n1,2,2111\n'
    

    使用标题,标题会改变,但列中的值不会改变。

    sio = StringIO()
    df.to_csv(sio, header=['foo', 'bar'])
    sio.getvalue()
    ',foo,bar\n0,1111,1\n1,2111,2\n'
    

    如果你混淆了columns=header=,你会过得很糟糕。

    【讨论】:

      猜你喜欢
      • 2012-10-04
      • 2016-01-17
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 2016-07-06
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多