我有一个大约为(1200,10)的大数据帧,其中大部分是字符串,我必须在现有引用列说'Y'的基础上附加一个新列说'Z',其值是'A','B'或“ C”,因此我需要在df中选择三个相应的列之一,例如“ D”,“ E”或“ F”,并将此值附加为列“ Z”。因此,现有表看起来像:
... T G D E F K ... Y
0 . . . 4 6 8 . ... A
1 . . . 1 2 3 . ... B
2 . . . 5 7 9 . ... B
并要求:
... T G D E F K ... Y Z
0 . . . 4 6 8 . ... A 4
1 . . . 1 2 3 . ... B 2
2 . . . 5 7 9 . ... B 7
我对使用熊猫还很陌生,如果这看起来很简单,请对不起!
谢谢!
答案 0 :(得分:4)
IIUC,您需要DataFrame.lookup
和Series.map
带有字典来进行自定义映射。像这样:
df = pd.DataFrame({'T': {0: '.', 1: '.', 2: '.'}, 'G': {0: '.', 1: '.', 2: '.'}, 'D': {0: 4, 1: 1, 2: 5}, 'E': {0: 6, 1: 2, 2: 7}, 'F': {0: 8, 1: 3, 2: 9}, 'K': {0: '.', 1: '.', 2: '.'}, 'Y': {0: 'A', 1: 'B', 2: 'B'}, 'Z': {0: 4, 1: 2, 2: 7}})
d = {'A': 'D', 'B': 'E', 'C': 'F'}
df['Z'] = df.lookup(df.index, df.Y.map(d))
T G D E F K Y Z
0 . . 4 6 8 . A 4
1 . . 1 2 3 . B 2
2 . . 5 7 9 . B 7