按标签系列重新索引DataFrame列

时间:2018-06-29 16:49:24

标签: python pandas dataframe indexing reindex

我有一系列标签

pd.Series(['L1', 'L2', 'L3'], ['A', 'B', 'A'])

和一个数据框

pd.DataFrame([[1,2], [3,4]], ['I1', 'I2'], ['A', 'B'])

我想有一个数据列,其中列['L1', 'L2', 'L3']的列数据分别来自“ A”,“ B”和“ A”。像这样...

pd.DataFrame([[1,2,1], [3,4,3]], ['I1', 'I2'], ['L1', 'L2', 'L3'])

以一种不错的熊猫方式。

3 个答案:

答案 0 :(得分:2)

自从您提到reindex

#s=pd.Series(['L1', 'L2', 'L3'], ['A', 'B', 'A'])
#df=pd.DataFrame([[1,2], [3,4]], ['I1', 'I2'], ['A', 'B'])
df.reindex(s.index,axis=1).rename(columns=s.to_dict())
Out[598]: 
    L3  L2  L3
I1   1   2   1
I2   3   4   3

答案 1 :(得分:1)

这将产生您描述的数据框:

import pandas as pd
import numpy as np

data = [['A','B','A','A','B','B'],
        ['B','B','B','A','B','B'],
        ['A','B','A','B','B','B']]

columns = ['L1', 'L2', 'L3', 'L4', 'L5', 'L6']

pd.DataFrame(data, columns = columns)

答案 2 :(得分:0)

您可以使用date (GNU coreutils) 8.25访问器:

loc

s = pd.Series(['L1', 'L2', 'L3'], ['A', 'B', 'A']) df = pd.DataFrame([[1,2], [3,4]], ['I1', 'I2'], ['A', 'B']) res = df.loc[:, s.index] print(res) A B A I1 1 2 1 I2 3 4 3 带有iloc的附件:

columns.get_loc

这两种方法都可以访问与NumPy数组相同的重复标签/位置。