提供了一个像XYZ
这样的字符串,我需要在pandas单元格中设置一个值,或者根据单元格是否为空来附加它。
如果该单元格为空,则将该值设置为XYZ
;如果该单元格不为空,那么我将其添加到;
之前,例如,结果将为notempty;XYZ
我该怎么做? 假设有一个数据框:
dff = pd.DataFrame({'D':['a','b','','c'],
'E':['d','','','']})
# I would like to add the string:
mystring='XYZ'
condition = (dff['E'] == 'd')
# checking if he cell where I want to add is empty or not
if dff.loc[condition,['D']]['D'][0] == '':
dff.loc[condition,['D']] = mystring
else:
# the cell is not empty. Hence I have to add ; and the string
content = dff.loc[condition,['D']]['D'][0]
dff.loc[condition,['D']] = content + ';' + mystring
问题是。 这根本不是pythonic-nice。 有什么建议吗?
注1:我添加了该条件,因为实际上我有很多,并且我不能使用 pd.at,这可能很诱人
答案 0 :(得分:0)
您可以使用np.where
:
dff = pd.DataFrame({'D':['a','b','','c'],
'E':['d','','','']})
mystring='XYZ'
dff["D"] = np.where(dff["D"]=="",mystring,dff["D"]+";"+mystring)
print (dff)
D E
0 a;XYZ d
1 b;XYZ
2 XYZ
3 c;XYZ