在Pandas数据框中获取表头行

3

我有以下文本文件:

line_1
line_2
line_3
Col_A    Col_B   Col_C
1.2      33       45
23       12       55

以下是我的理解:

df  = pandas.read_table(file_name, skiprows=3, sep=' ', skipinitialspace=True)

有没有办法只访问标题行?例如'Col_A Col_B Col_C'作为字符串?我不想使用df.columns.values,因为它返回一个数组。我想获取保留不同列之间间距的标题行。

你指的是 df.columns.str.join(' ') 还是 ' '.join(df.columns) 如果你想要一个 str? - EdChum
1个回答

2
您只需要执行以下操作:
In [6]:
' '.join(df)

Out[6]:
'Col_A Col_B Col_C'

这种方法有效是因为从df返回的可迭代对象是字符串类型的列,所以您可以使用分隔符将它们 join 在一起。 编辑 如果你想得到存储的确切标题,可以按以下方式操作:
In [8]:
df = pd.read_table(io.StringIO(t), skiprows=3, header=None, nrows=1)
df

Out[8]:
                        0
0  Col_A    Col_B   Col_C

In [10]:
df.iloc[0][0]

Out[10]:
'Col_A    Col_B   Col_C'

这段代码没有指定分隔符,因此会寻找逗号,但是没有逗号,所以整个标题行被读取为单个列值。你可以通过上面示例中的索引方式获取整行的值。


抱歉,我应该表述得更清楚。我想保留Col_A、Col_B和Col_C之间的空格数量。使用' '.join无法保留这一点。 - user308827
当您向数据框添加标题行时,每个列中的空格是否被保留?数据框的分隔符是什么?它是由空格分隔的吗? - pelumi
由于您读取了csv并指定了分隔符,因此您失去了原始空格,您可以使用以下方法:df = pandas.read_table(file_name, skiprows=3, header=None, nrows=1) 这将创建一个只有标题的单行df作为数据行,然后您只需执行 df.iloc[0][0] 以获取标题字符串。 - EdChum
@pelumi,分隔符是空格。不确定空格是否被保留。 - user308827
是的,您可以忽略那一部分,那只是为了让我加载您的数据。 - EdChum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接