在pandas无效的情况下有条件地分配新列名和创建新列?

时间:2015-06-30 06:21:34

标签: python-2.7 pandas numpy dataframe conditional

我有一个带有pandas的简单数据框,然后我将变量名称重命名为' a'和' b'。

import pandas as pd
import numpy as np

df = pd.DataFrame({'Type':list('ABBC'), 'Set':list('ZZXY')})
df.columns = ['a', 'b']
print df
df['color'] = np.where(df['b']=='Z', 'green', 'red')
print df

   a  b
0  Z  A
1  Z  B
2  X  B
3  Y  C
   a  b color
0  Z  A   red
1  Z  B   red
2  X  B   red
3  Y  C   red

没有重命名行df.columns,我得

import pandas as pd
import numpy as np

df = pd.DataFrame({'Type':list('ABBC'), 'Set':list('ZZXY')})
#df.columns = ['a', 'b']
#print df
df['color'] = np.where(df['Set']=='Z', 'green', 'red')
print df

  Set Type  color
0   Z    A  green
1   Z    B  green
2   X    B    red
3   Y    C    red

我希望并且期望第一组代码能够生成绿色红色红色"但它失败了,我不知道为什么。

1 个答案:

答案 0 :(得分:1)

正如评论中指出的那样,问题来自于如何重命名列。你最好重命名,如下:

df = df.rename( columns={'Set': 'a','Type': 'b'})