Python 如何获取熊猫索引位置和名称

Python 如何获取熊猫索引位置和名称,python,pandas,Python,Pandas,我想从pandas数据框中获取名称和索引位置,并进入如下逻辑,只是想知道是否有更好的方法来处理这个问题 import pandas as pd df = pd.read_csv('/docs/Credit_Card.csv', encoding='ISO-8859-1') cols = df.columns col = [df.columns.get_loc(c) for c in df.columns if c in cols] print(pd.DataFrame(list(zip(col

我想从pandas数据框中获取名称和索引位置,并进入如下逻辑,只是想知道是否有更好的方法来处理这个问题

import pandas as pd

df = pd.read_csv('/docs/Credit_Card.csv', encoding='ISO-8859-1')
cols = df.columns
col = [df.columns.get_loc(c) for c in df.columns if c in cols]
print(pd.DataFrame(list(zip(cols, col)),columns=['index_Name', 'Index_Number']))
结果输出:

             index_Name  Index_Number
0        Card Type Code             0
1   Card Type Full Name             1
2          Issuing Bank             2
3           Card Number             3
4    Card Holder's Name             4
5              CVV/CVV2             5
6            Issue Date             6
7           Expiry Date             7
8          Billing Date             8
9              Card PIN             9
10         Credit Limit            10
使用:

类似于:

或:


使用
dict
{name:column\u names:number:column\u numering}
创建数据场

In [591]: pd.DataFrame({'index_Name': df.columns, 'Index_Number': range(len(df.columns))})
Out[591]:
             index_Name  Index_Number
0        Card Type Code             0
1   Card Type Full Name             1
2          Issuing Bank             2
3           Card Number             3
4    Card Holder's Name             4
5              CVV/CVV2             5
6            Issue Date             6
7           Expiry Date             7
8          Billing Date             8
9              Card PIN             9
10         Credit Limit            10
或使用

In [621]: pd.DataFrame({'index_Name': df.columns}).rename_axis('index_Number').reset_index()
Out[621]:
             index_Name  Index_Number
0        Card Type Code             0
1   Card Type Full Name             1
2          Issuing Bank             2
3           Card Number             3
4    Card Holder's Name             4
5              CVV/CVV2             5
6            Issue Date             6
7           Expiry Date             7
8          Billing Date             8
9              Card PIN             9
10         Credit Limit            10

@零,很好。。你能稍微解释一下逻辑吗,虽然我看到我们在这里使用的是带范围的字典。@Zero,第二种方法看起来更优雅。@jezrael又是一种不错的方法,我只看到第一种解决方案,因为我们还需要导入
numpy
。@pygo-是,为了获得更好的性能,最好在pandas
np.arange
like
range
;)
df1 = pd.Series(df.columns).reset_index()
df1.columns = ['Index_Number','index_Name']
In [591]: pd.DataFrame({'index_Name': df.columns, 'Index_Number': range(len(df.columns))})
Out[591]:
             index_Name  Index_Number
0        Card Type Code             0
1   Card Type Full Name             1
2          Issuing Bank             2
3           Card Number             3
4    Card Holder's Name             4
5              CVV/CVV2             5
6            Issue Date             6
7           Expiry Date             7
8          Billing Date             8
9              Card PIN             9
10         Credit Limit            10
In [621]: pd.DataFrame({'index_Name': df.columns}).rename_axis('index_Number').reset_index()
Out[621]:
             index_Name  Index_Number
0        Card Type Code             0
1   Card Type Full Name             1
2          Issuing Bank             2
3           Card Number             3
4    Card Holder's Name             4
5              CVV/CVV2             5
6            Issue Date             6
7           Expiry Date             7
8          Billing Date             8
9              Card PIN             9
10         Credit Limit            10