将pandas数据框列名转换为字典

7
我将尝试将pandas数据框的列名转换为字典。目前不太担心数据框中实际的数据。
假设我有一个像这样的示例数据框,现在并不太关心索引:
Col1 Col2 Col3 Col4
--------------------
 a    b    c    a
 b    d    e    c

I'd like to get an output of a dictionary like:

{'Col1': 0, 'Col2': 1, 'Col3': 2, 'Col4': 3}

不需要过于担心输出的顺序,只要字典中分配的键保持每个列名的顺序即可。

2个回答

9
这很简单,可以用理解方式实现:

代码:

{c: i for i, c in enumerate(df.columns)}

测试代码:

import pandas as pd

df = pd.DataFrame({'date': ['2015-01-01', '2015-01-02', '2015-01-03'],
                   'value': ['a', 'b', 'c'],
                   'num': [1, 2, 3]
                   })

print(df)
print({c: i for i, c in enumerate(df.columns)})

结果:

         date  num value
0  2015-01-01    1     a
1  2015-01-02    2     b
2  2015-01-03    3     c

{'date': 0, 'num': 1, 'value': 2}

3

不必像@StephenRauch所发帖的那样使用enumerate,您也可以使用pandas.Index方法get_loc:

{i:df.columns.get_loc(i) for i in df.columns}

使用 Stephen 的设置:

import pandas as pd

df = pd.DataFrame({'date': ['2015-01-01', '2015-01-02', '2015-01-03'],
                   'value': ['a', 'b', 'c'],
                   'num': [1, 2, 3]
                   })

print(df)
print({i:df.columns.get_loc(i) for i in df.columns})

输出:

         date value  num
0  2015-01-01     a    1
1  2015-01-02     b    2
2  2015-01-03     c    3

{'date': 0, 'value': 1, 'num': 2}

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