Python 需要帮助将列时间戳数据转换为2个单独的列(日期、时间)

Python 需要帮助将列时间戳数据转换为2个单独的列(日期、时间),python,pandas,dataframe,Python,Pandas,Dataframe,一般来说,对编程和python来说是相当陌生的。边走边学。打破东西,很多,但学习很多 我想做的是创建一个带有特定列的CSV,但我还没有弄清楚。目前,在我整理数据之后,其中一列是日期时间戳,我需要将其分为两列,一列是日期(yyyy/mm/dd),另一列是时间(HH:mm:SS 24小时时间)。代码如下所示: activities = api.get_activities( date='2021-03-09', direction='asc', ) df = pd.DataFram

一般来说,对编程和python来说是相当陌生的。边走边学。打破东西,很多,但学习很多

我想做的是创建一个带有特定列的CSV,但我还没有弄清楚。目前,在我整理数据之后,其中一列是日期时间戳,我需要将其分为两列,一列是日期(yyyy/mm/dd),另一列是时间(HH:mm:SS 24小时时间)。代码如下所示:

activities = api.get_activities(
    date='2021-03-09',
    direction='asc',
)

df = pd.DataFrame([activity._raw for activity in activities])
print('created dataframe')

id = df["id"]
activity_type = df["activity_type"]
transaction_time = df["transaction_time"]
type = df["type"]
price = df["price"]
qty = df["qty"]
side = df["side"]
symbol = df["symbol"]
leaves_qty = df["leaves_qty"]
order_id = df["order_id"]
cum_qty = df["cum_qty"]

df[['date', 'time']] = df.transaction_time.str.strip('Z').str.split('T', expand=True)

header = ["date","time","symbol","qty","price","side"]

df.to_csv('daily_journal_export.csv', columns = header, index = False)
print('Completed')
transaction_time,symbol,qty,price,side
2021-03-09T15:03:06.0925Z,XNET,5059,6.21,buy
2021-03-09T15:03:06.888595Z,XNET,718,6.21,buy
2021-03-09T15:03:09.474924Z,CLNE,3661,11.65,buy
2021-03-09T15:05:13.957144Z,SOL,1728,12.68,buy
2021-03-09T15:57:53.094945Z,SOL,753,13.33,sell
2021-03-09T15:57:53.118822Z,XNET,5777,6.09,sell
2021-03-09T15:57:53.220454Z,CLNE,3661,11.78,sell
2021-03-09T15:57:53.613874Z,SOL,975,13.33,sell
导出时,我得到的内容如下所示:

activities = api.get_activities(
    date='2021-03-09',
    direction='asc',
)

df = pd.DataFrame([activity._raw for activity in activities])
print('created dataframe')

id = df["id"]
activity_type = df["activity_type"]
transaction_time = df["transaction_time"]
type = df["type"]
price = df["price"]
qty = df["qty"]
side = df["side"]
symbol = df["symbol"]
leaves_qty = df["leaves_qty"]
order_id = df["order_id"]
cum_qty = df["cum_qty"]

df[['date', 'time']] = df.transaction_time.str.strip('Z').str.split('T', expand=True)

header = ["date","time","symbol","qty","price","side"]

df.to_csv('daily_journal_export.csv', columns = header, index = False)
print('Completed')
transaction_time,symbol,qty,price,side
2021-03-09T15:03:06.0925Z,XNET,5059,6.21,buy
2021-03-09T15:03:06.888595Z,XNET,718,6.21,buy
2021-03-09T15:03:09.474924Z,CLNE,3661,11.65,buy
2021-03-09T15:05:13.957144Z,SOL,1728,12.68,buy
2021-03-09T15:57:53.094945Z,SOL,753,13.33,sell
2021-03-09T15:57:53.118822Z,XNET,5777,6.09,sell
2021-03-09T15:57:53.220454Z,CLNE,3661,11.78,sell
2021-03-09T15:57:53.613874Z,SOL,975,13.33,sell
事务时间如下所示,需要分离和转换:

  • 日期栏:(yyyy/mm/dd)
  • 时间列:(HH:MM:SS 24小时时间)
2021-03-09T15:03:06.0925Z


任何帮助都将不胜感激。

您可以在时间戳上使用
str.split()
,并使用
展开
参数(下面的2a),或者使用
.dt.date
.dt.time
(下面的2b)

  • 加载示例数据:
  • >>将熊猫作为pd导入
    >>>df=pd.read\u csv('daily\u journal\u export.csv'))
    交易\时间符号数量价格侧
    2021-03-09T15:03:06.0925Z XNET 50596.21购买
    1201-03-09T15:03:06.888595Z XNET 718 6.21购买
    2021-03-09T15:03:09.474924Z CLNE 3661 11.65购买
    3 2021-03-09T15:05:13.957144Z SOL 1728 12.68购买
    4 2021-03-09T15:57:53.094945Z SOL 753 13.33卖出
    5 2021-03-09T15:57:53.118822Z XNET 5777 6.09卖出
    6 2021-03-09T15:57:53.220454Z CLNE 3661 11.78卖出
    7 2021-03-09T15:57:53.613874Z SOL 97513.33卖出
    
    2a。去掉小数,按
    T
    拆分,并展开为单独的列:

    >>df[['date','time']]=df.transaction\u time.str.replace(r'\..*,'').str.split('T',expand=True)
    >>>df=df.drop('transaction\u time',axis=1)
    符号数量价格侧日期时间
    0 XNET 50596.21购买2021-03-09 15:03:06
    1 XNET 718 6.21购买2021-03-09 15:03:06
    2 CLNE 3661 11.65购买2021-03-09 15:03:09
    3索尔1728 12.68购买2021-03-09 15:05:13
    4 SOL 753 13.33出售2021-03-09 15:57:53
    5 XNET 5777 6.09出售2021-03-09 15:57:53
    6 CLNE 3661 11.78出售2021-03-09 15:57:53
    7 SOL 975 13.33出售2021-03-09 15:57:53
    
    2b或者,您可以使用
    .dt.date
    .dt.time
    代替2a的字符串拆分方法:

    df['date']=pd.to_datetime(df.transaction_time).dt.date >>>df['time']=pd.to\u datetime(df.transaction\u time.str.replace(r'\..*,'').dt.time >>>df=df.drop('transaction\u time',axis=1) 符号数量价格侧日期时间 0 XNET 50596.21购买2021-03-09 15:03:06 1 XNET 718 6.21购买2021-03-09 15:03:06 2 CLNE 3661 11.65购买2021-03-09 15:03:09 3索尔1728 12.68购买2021-03-09 15:05:13 4 SOL 753 13.33出售2021-03-09 15:57:53 5 XNET 5777 6.09出售2021-03-09 15:57:53 6 CLNE 3661 11.78出售2021-03-09 15:57:53 7 SOL 975 13.33出售2021-03-09 15:57:53
  • 如果要将
    日期
    时间
    移回前面:
  • >>>columns=df.columns.to_list()[-2:]+df.columns.to_list()[:-2]
    >>>df=df[列]
    日期时间符号数量价格侧
    021-03-09 15:03:06 XNET 5059 6.21购买
    1201-03-09 15:03:06 XNET 718 6.21购买
    2021-03-09 15:03:09 CLNE 3661 11.65购买
    2021-03-09 15:05:13太阳报1728 12.68购买
    4 2021-03-09 15:57:53索尔753 13.33卖出
    5 2021-03-09 15:57:53 XNET 5777 6.09出售
    6 2021-03-09 15:57:53 CLNE 3661 11.78卖出
    7 2021-03-09 15:57:53索尔97513.33卖出
    
    那么我需要做些什么来调整我的标题吗?header=[“transaction_time”、“symbol”、“Quantity”、“price”、“side”]我在我的原始帖子中添加了新的细节。好的,我更新了代码以处理适当的标题(使用您的新样本数据)。对不起,伙计,我有点迷路了,只是对python和pandas不太熟悉。我可以告诉你,我正在全力以赴。我只是没有得到和你一样的结果。他们是在我的原始代码中进行剥离和组织,而不是生成新的python文件的一种方法吗?天哪,我做到了,没问题!