根据其他列的条件添加和更新熊猫列



所以我有一个超过100万行的数据帧

其中一列称为"activity",其数字范围为1-12。我添加了一个新的空列,称为"标签">

列"label"需要根据列"activity"的值填充0或1

因此,如果活动为1、2、3、6、7、8,则标签将为0,否则将为1

以下是我目前正在做的事情:

df = pd.read_csv('data.csv')
df['label'] = ''
for index, row in df.iterrows():
if (row['activity'] == 1 or row['activity'] == 2 or row['activity'] == 3 or row['activity'] == 6 row['activity'] == 7 or row['activity'] == 8):
df.loc[index, 'label'] == 0
else:
df.loc[index, 'label'] == 1
df.to_cvs('data.csv', index = False)

这是非常低效的,并且运行时间太长。是否有任何优化?是否可能使用numpy数组?有什么方法可以让代码更干净吗?

numpy.whereSeries.isin:一起使用

df['label'] = np.where(df['activity'].isin([1, 2, 3, 6, 7, 8]), 0, 1)

或者通过反转掩码将True, False映射到0, 1

df['label'] = (~df['activity'].isin([1, 2, 3, 6, 7, 8])).astype(int)

最新更新