编辑行,如果它包含某个字符

时间:2018-02-24 16:22:20

标签: database pandas dataframe

我有一个pandas数据框,其列如下所示:

'Column name'
 NaN
 [11am-2am]
 NaN
 [9am-10pm]
 NaN
 [10:30am-10:30pm]

请参阅下面的图片以进一步说明:row_explanation 我试图以[10:30 am-10:00pm]

的相同格式制作所有行
working_hours_daily=schedule['Daily'] // column name is 'Daily'
c=lambda x: str(x)
b=lambda x: str(x).replace('-',',').replace('am',':00am').replace('pm',':00pm').split(',')

times_daily.apply(c)

open_hours_daily=[]

for i in (range(0,len(times_daily))):
    if ":" not in times_daily:
        working_hours_daily=times_daily.apply(b)

    print (working_hours_daily)
    open_hours_daily.append(working_hours_daily)

这个想法是在":"不在字符串中,

因此我不使用语法

但代码不遵守该条件并将b应用于所有行,

所以有些行结果很好:[[' 11:00am,2:00 am']]

但其他已包含':'结果如下:[[' 10:30:00am,10:30:00 pm']]

非常感谢任何帮助。

卡米尔

1 个答案:

答案 0 :(得分:1)

这应该有效:

b = lambda x: str(x) if str(x).contains(':') else str(x).replace('-',',').replace('am',':00am').replace('pm',':00pm').split(',')
times_daily.apply(b)

如果你可以请发布样本数据集,那就太好了,所以我可以调试这段代码。