我正在尝试根据另一列的值动态创建新列。 假设我有以下数据框
A | B
11个| 1个
22个| 0
33个| 1个
44个| 1个
55个| 0
我想创建一个新列。 如果列B的值为1,则插入'Y',否则插入'N'。 结果数据框应如下所示:
A | B | C
11 | 1 | Y
22 | 0 | N
33 | 1 | Y
44 | 1 | Y
55 | 0 | N
我可以通过迭代列值来实现这一点,
for i in dataframe['B'].values:
if i==1:
add Y to Series
else:
add N to Series
dataframe['C'] = Series
但是,我担心这会严重降低性能,特别是因为我的数据集包含500,000多行。 任何帮助将不胜感激。 谢谢。
答案 0 :(得分:3)
使用loc
避免链式索引。大熊猫中有returning a view versus a copy与numpy
df['C'] = 'N'
df.loc[df.B == 1, 'C'] = 'Y'
答案 1 :(得分:1)
试试这个:
df['C'] = 'N'
df['C'][df['B']==1] = 'Y'
应该更快。