0

I have a dataframe which I need to it. I am doing in the following way:

  for index, row in df.iterrows():
      if len(row['dateHourMinute'])==14:
          row['dateHourMinute'] = pd.to_datetime(row['dateHourMinute'])
      elif len(row['dateHourMinute'])==21:
          row['dateHourMinute'] = row['dateHourMinute'][:-9]
          row['dateHourMinute'] = row['dateHourMinute']+'00'
          row['dateHourMinute'] = pd.to_datetime(row['dateHourMinute'])
      elif len(row['dateHourMinute'])==19:
          row['dateHourMinute'] = row['dateHourMinute'][:-9]
          row['dateHourMinute'] = row['dateHourMinute'] + '0000'
          row['dateHourMinute'] = pd.to_datetime(row['dateHourMinute'])

However, the dataframe (df) is not being updated in the end.

Any solutions on that? I have seen lambda, but it is not quite useful in my case.

Any helps would be really appreciated.

2 Answers 2

1

You may try using .apply(func):

def fixCol(row):
    if len(row['dateHourMinute']) == 14:
        row['dateHourMinute'] = pd.to_datetime(row['dateHourMinute'])
    elif len(row['dateHourMinute']) == 21:
        row['dateHourMinute'] = row['dateHourMinute'][:-9]
        row['dateHourMinute'] = row['dateHourMinute'] + '00'
        row['dateHourMinute'] = pd.to_datetime(row['dateHourMinute'])
    elif len(row['dateHourMinute']) == 19:
        row['dateHourMinute'] = row['dateHourMinute'][:-9]
        row['dateHourMinute'] = row['dateHourMinute'] + '0000'
        row['dateHourMinute'] = pd.to_datetime(row['dateHourMinute'])

df['dateHourMinute'] = df['dateHourMinute'].apply(fixCol)
Sign up to request clarification or add additional context in comments.

Comments

0

Solved it like this:

for i, row in traffic_source_df.iterrows():
    new_value = pd.Series([])
    if len(row['dateHourMinute']) == 14:
        new_value = pd.to_datetime(row['dateHourMinute'])
    elif len(row['dateHourMinute']) == 12:
        row['dateHourMinute'] = row['dateHourMinute'] + '00'
        new_value = pd.to_datetime(row['dateHourMinute'])
    elif len(row['dateHourMinute']) == 10:
        row['dateHourMinute'] = row['dateHourMinute'] + '0000'
        new_value = pd.to_datetime(row['dateHourMinute'])
    traffic_source_df.at[i, 'dateHourMinute'] = new_value

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.