我有一系列标签
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'])
以一种不错的熊猫方式。
答案 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数组相同的重复标签/位置。