我有一个像这样的数据集
日期 ---------- F / R ------ S / R
9/22/2018 --- 72 -------- 00
9/21/2018 ----- 22 --------- 17
现在我想做的就是以文本格式替换该日期,例如,我要“ 9月”的日期是“ 9”,我要“星期六”的日期是“ 22”。 首先,我尝试使用这段代码将月份从数字月份更改为文本月份,但失败了
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('teer1_new1.csv')
def f(x):
if (x['Date']):
if (x[0:1] == '9/'):
return 'September'
else:
return 'none'
dataset['Date'] = dataset.apply(f, axis=1)
我收到此错误
ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index 0')
是的,我的数据框日期列中有很多行,以提醒您。
答案 0 :(得分:2)
您首先需要将日期转换为日期时间-通过read_csv
或pandas.to_datetime
中的参数parse_dates
,最后使用Series.dt.month_name
和
Series.dt.day_name
:
df = pd.read_csv('teer1_new1.csv', parse_dates=['Date'])
#alternative
#df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y')
df['Date1'] = df['Date'].dt.day_name()
df['Date2'] = df['Date'].dt.month_name()
print (df)
Date F/R S/R Date1 Date2
0 2018-09-22 72 0 Saturday September
1 2018-09-21 22 17 Friday September
答案 1 :(得分:1)
dataset['Date'] = pd.to_datetime(dataset['Date'])
## returns month
dataset['monthname'] = dataset['Date'].dt.month_name()
## returns day
dataset['day'] = dataset['Date'].dt.dayofweek()
## creating a map of dayofweek to day
s = {6 : 'Sunday', 0: 'Monday', 1: 'Tuesday',
2: 'Wednesday', 3: 'Thursday', 4: 'Friday', 5: 'Saturday'}
s = pd.Series(s)
dataset['dayname'] = dataset['day'].map(s)