使用参考列在数据框中的行值之间进行选择?

时间:2019-04-19 15:12:17

标签: python pandas dataframe

我有一个大约为(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

我对使用熊猫还很陌生,如果这看起来很简单,请对不起!

谢谢!

1 个答案:

答案 0 :(得分:4)

IIUC,您需要DataFrame.lookupSeries.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