如何从数组中选择单独的字符串值并将其用作pandas数据框Python中的列名?

时间:2019-06-28 11:48:36

标签: python arrays pandas

我有以下包含字符串值的数组:

type(array)
pandas.core.indexes.base.Index

print(array)
Index(['hooiland_1_1', 'hooiland_1_2', 'hooiland_1_3', 'hooiland_1_4',
       'roggeteelt_1_1', 'roggeteelt_1_2', 'roggeteelt_1_3', 'roggeteelt_1_4',
       'zwartebraak_1_1', 'zwartebraak_1_2', 'zwartebraak_1_3',
       'zwartebraak_1_4', 'hooiland_2_1', 'hooiland_2_2', 'hooiland_2_3',
       'hooiland_2_4', 'roggeteelt_2_1', 'roggeteelt_2_2', 'roggeteelt_2_3',
       'roggeteelt_2_4', 'zwartebraak_2_1', 'zwartebraak_2_2',
       'zwartebraak_2_3', 'zwartebraak_2_4'],
      dtype='object')

我想将此数组的每个字符串值用作一个空的熊猫数据框中的单独的列名。

尝试:

pd.DataFrame(columns=["class",array]) ###first column is "class"
gives error: Invalid syntax

也尝试拆分数组,但没有成功:

array.split()
gives error :AttributeError: 'Index' object has no attribute 'split'

有一种简单的方法吗?

预期输出: 数据框:

class    hooiland_1_1    hooiland_1_2    hooiland_1_3 .... zwartebraak_2_4
class1   value           value           value             value
class2
class3

稍后在过程中添加值,但首先需要使用正确的列名构造空数据框。

3 个答案:

答案 0 :(得分:1)

pd.DataFrame(columns=["class"] + array.tolist())

答案 1 :(得分:1)

您需要Index.insert

idx_arr = idx_arr.insert(0, 'class')

Out[444]:
Index(['class', 'hooiland_1_1', 'hooiland_1_2', 'hooiland_1_3', 'hooiland_1_4',
       'roggeteelt_1_1', 'roggeteelt_1_2', 'roggeteelt_1_3', 'roggeteelt_1_4',
       'zwartebraak_1_1', 'zwartebraak_1_2', 'zwartebraak_1_3',
       'zwartebraak_1_4', 'hooiland_2_1', 'hooiland_2_2', 'hooiland_2_3',
       'hooiland_2_4', 'roggeteelt_2_1', 'roggeteelt_2_2', 'roggeteelt_2_3',
       'roggeteelt_2_4', 'zwartebraak_2_1', 'zwartebraak_2_2',
       'zwartebraak_2_3', 'zwartebraak_2_4'],
      dtype='object')

pd.DataFrame(columns=idx_arr)

Out[447]:
Empty DataFrame
Columns: [class, hooiland_1_1, hooiland_1_2, hooiland_1_3, hooiland_1_4, roggete
elt_1_1, roggeteelt_1_2, roggeteelt_1_3, roggeteelt_1_4, zwartebraak_1_1, zwarte
braak_1_2, zwartebraak_1_3, zwartebraak_1_4, hooiland_2_1, hooiland_2_2, hooilan
d_2_3, hooiland_2_4, roggeteelt_2_1, roggeteelt_2_2, roggeteelt_2_3, roggeteelt_
2_4, zwartebraak_2_1, zwartebraak_2_2, zwartebraak_2_3, zwartebraak_2_4]
Index: []

答案 2 :(得分:1)

您的代码pd.DataFrame(columns=["class",array])不会生成列表,因此语法无效。

如果您要在索引的开头添加“类”,则可以尝试:

pd.DataFrame(columns=array.insert(0, 'class'))  # adding 'class' to the beginning of the index

您可能要避免使用array作为变量名...