设置或添加值到熊猫单元格//优化

时间:2020-02-10 22:11:19

标签: python pandas

提供了一个像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,这可能很诱人

1 个答案:

答案 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