【发布时间】:2016-09-20 02:18:14
【问题描述】:
您好,我正在尝试创建一个列。 如果 ChannelID 列是“J”、“F”、“H”,那么列名间接应该是 1 否则为 0,我相信我的 csv 文件中 ChannelID 列的每个单元格中都有空格。
原始数据
cd Channel month
B J 1
B J 3
B M 5
B J 7
B J 9
B H 2
B J 5
B J 6
B J 1
B J 7
预期数据集
cd Channel month Indirect
B J 1 1
B J 3 1
B M 5 0
B J 7 1
B J 9 1
B H 2 1
B J 5 1
B J 6 1
B C 1 0
B J 7 1
使用的代码
Output['Indirect']=np.where((Output['Channel']=='J')|(Output['Channel']=='H'),1,0)
但是这段代码在间接列中只给出了 0,如果我使用下面的代码,那么我会得到错误-
if Output['Channel']== ('J' or 'F' or 'H' or 'G' or 'I'or 'K' or 'M'):
Output['Indirect'] = 1
else:
Output['Indirect'] = 0
error- ValueError: Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
由于 Channel 列中每个单元格中的值后面都有空格,因此我使用条带将其删除,然后我得到以下错误-
if Output['Channel'].strip()== ('J' or 'F' or 'H' or 'G' or 'I'or 'K' or 'M'):
Output['Indirect'] = 1
else:
Output['Indirect'] = 0
error- AttributeError: 'Series' 对象没有属性 'strip'
非常感谢,
【问题讨论】:
标签: python numpy pandas dataframe series