繁体   English   中英

如何使用 Pandas 从 csv 文件的列中提取日期?

[英]How do I extract the date from a column in a csv file using pandas?

这是 csv 文件中的“播出”列:作为

链接到 csv 文件: https : //drive.google.com/file/d/1w7kIJ5O6XIStiimowC5TLsOCUEJxuy6x/view? usp =sharing

我想从“from”单词后面的日期中提取日期和月份(以单词为单位),并将其存储在另一个 csv 文件的单独列中。 'from' 是一个障碍,因为如果它只是作为时间戳格式很容易提取的日期。

import pandas as pd

file = pd.read_csv('file.csv')
result = []

for cell in file['aired']:
    date = cell[8:22]
    date_ts = pd.to_datetime(date, format='%Y-%m-%d')
    result.append((date_ts.month_name(), date_ts))

df = pd.DataFrame(result, columns=['month', 'date'])
df.to_csv('result_file.csv')

您从一个字符串开始,并希望分解其中的数据。 单引号表明这是一个字符串形式的 dict 结构。 Python 标准库包括ast (抽象语法树)模块,其literal_eval方法可以将字符串读入 dict,从这个 SO 答案中收集: Convert a String representation of a Dictionary to a dictionary?

您想apply其应用于您的列以获取 dict,此时您使用.apply(pd.Series)将其扩展为单独的列,基于此 SO 答案: 将 Pandas 列中的字典/列表拆分为单独的列

尝试以下

import pandas as pd
import ast

df = pd.read_csv('AnimeList.csv')
# turn the pd.Series of strings into a pd.Series of dicts
aired_dict = df['aired'].apply(ast.literal_eval)
# turn the pd.Series of dicts into a pd.Series of pd.Series objects
aired_df = aired_dict.apply(pd.Series)
# pandas automatically translates that into a pd.DataFrame
# concatenate the remainder of the dataframe with the new data
df_aired = pd.concat([df.drop(['aired'], axis=1), aired_df], axis=1)
# convert the date strings to datetime values
df_aired['aired_from'] = pd.to_datetime(df_aired['from'])
df_aired['aired_to'] = pd.to_datetime(df_aired['to'])

暂无
暂无

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

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