熊猫-获取字符串中的列表df列名称(例如)

时间:2019-03-04 16:13:34

标签: python pandas

我有以下数据框

dtf = pd.DataFrame({'col1' : ['howdy_dude'],
             'col2' : ["HI"],
             'col3' : ["3"]})

我只需要获取带有字符串格式输出的标题列,
种类:'col1 + col2 + col3'

此示例为3列,但有时列数可以更高,有时可以更低。

谢谢。

4 个答案:

答案 0 :(得分:2)

据我所知,您希望无论列数如何,所有列字符串的总和。

这是回应

dtf = pd.DataFrame({'col1' : ['howdy_dude'],
             'col2' : ["HI"],
             'col3' : ["3"]})

dtf['new'] = dtf.apply(' '.join, axis=1)
dtf

new列将包含给定行的所有列中所有字符串的总和(如果需要,您可以删除连接中的空格)。

enter image description here

此外,如果您想将列名添加为字符串,则可以将join用作

dtf = pd.DataFrame({'col1' : ['howdy_dude'],
             'col2' : ["HI"],
             'col3' : ["3"]})

result = " ".join(dtf.columns)
print (type(result))
result 

enter image description here

希望这会有所帮助

答案 1 :(得分:1)

确切的答案是,如Harry_pb's answer所述:

" + ".join(dtf.columns)

请注意,{list())没有用。


但是,如果您的列名是整数,那么它将不起作用。您需要先将它们转换为字符串,例如:

dtf.columns = [1,2,3]
" + ".join( dtf.columns.astype(str) )

此外,如果您有MultiIndex,则此方法将不起作用。因此,一般而言,编写起来更快,您可以执行以下操作:

" + ".join( dtf.columns.format() )

如果您需要对MultIndex格式进行更多控制,则可以使用列表理解。例如:

id = pd.MultiIndex.from_tuples( (('A','X',0), ('B','Y',0), ('C','X',0)) )

'\n'.join([
    str(level) if i == 0 else '{}|_{}'.format('  '*(i-1), level)
    for elmt in id
    for i, level in enumerate(elmt)
])

出局:

A
|_X
  |_0
B
|_Y
  |_0
C
|_X
  |_0

答案 2 :(得分:0)

如果特别需要这种'col1 + col2 + col3'格式,

"+".join(list(dtf.columns))

答案 3 :(得分:-1)

要获取所有列,请使用:

dtf.columns.tolist()

然后您会找到它们的列表,然后可以根据需要对其进行合并。