加载数据集后,我创建了DF。之后,我需要添加一个新列并根据条件分配值。添加时,无法更改值。
P.S。我在SO中看到并测试了很多答案。我已经附上了图片和代码:
counter = 0
for checkin in df.itertuples():
counter += 1
if isWeekday(checkin[2]):
print(isWeekday(checkin[2]))
df['weekday'] = 100
else:
print(isWeekday(checkin[2]))
# df['weekday'].replace(0)
# df[checkin[0]]['weekday'] = 10
# df.assign(weekday = 0)
if counter == 10:
print(df.head(10))
break
我需要将else部分中的
weekday
值更改为0(条件为FALSE时)。
答案 0 :(得分:2)
我不确定是否能完全理解这个问题,但我想你可以
1)将checkin_time的数据类型更改为日期时间
df['checkin_time'] = pd.to_datetime(df['checkin_time'])
2)创建一个新列,以告知星期几
df['day_of_week'] = df['checkin_time'].dt.dayofweek
3)应用任何条件提取您的周历条件
答案 1 :(得分:0)
据我了解,您希望工作日的值在情况下为100,在其他情况下为0。对 ? 如果是这种情况,df ['weekday'] = 100将创建一个新列,并将所有值更新为100。 更好地使用索引来更新个人。
尝试类似的方法(根据评论,这是一个小技巧):
counter = 0
flag = 0
for checkin in df.itertuples():
if flag == 0:
df['weekday'] = 100
flag = 1
counter += 1
if isWeekday(checkin[2]):
print(isWeekday(checkin[2]))
df['weekday'][checkin[0]] = 100
else:
print(isWeekday(checkin[2]))
df['weekday'][checkin[0]] = 0
# df['weekday'].replace(0)
# df[checkin[0]]['weekday'] = 10
# df.assign(weekday = 0)
if counter == 10:
print(df.head(10))
break
希望这会有所帮助。