【发布时间】:2020-06-21 15:11:14
【问题描述】:
我有一个 pandas 数据框,其中有一列名为“图片”;该列具有以数字或字母开头的值。我要做的是创建一个新列,检查值是否以字母或数字开头,并相应地填充该新列。我正在使用 np.where,我的代码如下(raw_master 是数据框,'database' 是新列):
def iaps_or_naps(x):
if x in ["1","2","3","4","5","6","7","8","9"]:
return True
else:
return False
raw_master['database'] = np.where(iaps_or_naps(raw_master.picture[?][0])==True, 'IAPS', 'NAPS')
我的问题是,如果我只做raw_master.picture[0],它会检查整个字符串的值,这不是我需要的。我需要第一个字符;但是,如果我执行raw_master.picture[0][0],则只会计算整个数据帧第一行的第一个字符。顺便说一句,问号只是意味着我不知道该放什么。
我怎样才能得到它,以便每行都使用字符串的第一个字符?
非常感谢!
【问题讨论】:
-
您也不需要
np.where中的==True。np.where计算一个布尔值,如果条件为True,则将传递给它的第一个字符串 ('IAPS') 分配为分配的值,如果条件为 false,则分配第二个字符串'NAPS')。添加==True是不必要的评估。