繁体   English   中英

如何将具有数字日期的数据框的列更改为文本形式?

[英]How do I change a dataframe's column that has numerical date to textual form?

我有一个像这样的数据集

日期 ---------- F / R ------ S / R

2018年9月22日--- 72 -------- 00

2018年9月21日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')

是的,我的数据框日期列中有很多行,以提醒您。

你需要先转换日期日期时间-通过参数parse_datesread_csvpandas.to_datetime ,最后使用Series.dt.month_nameSeries.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
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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM