File size: 1,115 Bytes
dfe57e4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import re
import pandas as pd
def preprocess(data):
pattern = r'^\[(\d{2}\/\d{2}\/\d{2}, \d{1,2}:\d{2}:\d{2} [AP]M)\] (.+)$'
# Read the contents of the text document with the appropriate encoding
lines = data.splitlines()
message = []
timestamp = []
for line in lines:
line = line.strip() # Remove leading/trailing whitespace if necessary
m = re.match(pattern, line)
if m:
timestamp.append(m.group(1))
message.append(m.group(2))
df = pd.DataFrame({'user_messages': message, 'message_date': timestamp})
df['message_date'] = pd.to_datetime(timestamp, format='%d/%m/%y, %I:%M:%S %p')
df.rename(columns={'message_date':'date'}, inplace=True)
df[['user', 'message']] = df['user_messages'].str.split(': ', n=1, expand=True)
df.drop('user_messages', axis=1, inplace=True)
df['year'] = df['date'].dt.year
df['month_num'] = df['date'].dt.month
df['month'] = df['date'].dt.month_name()
df['day'] = df['date'].dt.day
df['hour'] = df['date'].dt.hour
df['minute'] = df['date'].dt.minute
return df
|