添加新列后如何更改Pandas Data Frame中的值

时间:2018-07-19 10:51:15

标签: python pandas dataframe

加载数据集后,我创建了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

enter image description here

  

我需要将else部分中的weekday值更改为0(条件为FALSE时)。

2 个答案:

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

希望这会有所帮助。