Matlab中tabel如何按照日期列拆分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab中tabel如何按照日期列拆分相关的知识,希望对你有一定的参考价值。

将一组数据读入Matlab,如图所示,日期为2016/3/16到2016/3/18,每个日期都包含了若干个数据,如何将其按照日期拆分呢,即每一天拆分为一个表。图片只是例子,我有一万多个数据,一百多天谢谢

直接通过matlab中主页选项框内的导入数据来导入你所有数据,并且输出类型设为字符串数组DateMap。我认为你第一列为日期,Date=unique(DateMap(:,1));
for i=1:size(Date,1)
A=DateMap(DateMap(:,1)==Date(i),:);
xlswrite("Date.xlsx",A,['Date' num2str(i)],"A1");
end
纯脑补,希望没有错,你试一下,望采纳
参考技术A 设整个table变量为a,第一列变量名称为t
拆分后的变量为aa
aa=a(isbetween(a.t,datetime(2016/3/16),datetime(2016/3/18)),:);

如何将包含日期时间的 DataFrame 列拆分为两列:一列包含日期,另一列包含一天中的时间?

【中文标题】如何将包含日期时间的 DataFrame 列拆分为两列:一列包含日期,另一列包含一天中的时间?【英文标题】:How can I split a DataFrame column with datetimes into two columns: one with dates and one with times of the day? 【发布时间】:2016-06-02 23:38:17 【问题描述】:

我有一个名为data 的数据框,其中有一列Dates 像这样,

                 Dates
0  2015-05-13 23:53:00
1  2015-05-13 23:53:00
2  2015-05-13 23:33:00
3  2015-05-13 23:30:00
4  2015-05-13 23:30:00

我知道如何向数据框添加一列,但是如何将Dates 划分为

          Day         Time
0  2015-05-13     23:53:00
1  2015-05-13     23:53:00
2  2015-05-13     23:33:00
3  2015-05-13     23:30:00
4  2015-05-13     23:30:00

【问题讨论】:

“日期”是什么类型的数据? df.Dates.iat[0] 的输出是什么? 【参考方案1】:

如果你的系列是s,那么这将创建这样一个DataFrame:

pd.DataFrame(
    'date': pd.to_datetime(s).dt.date,
    'time': pd.to_datetime(s).dt.time)

因为一旦您使用pd.to_datetime 转换系列,则可以使用dt 成员来提取部分。


示例

import pandas as pd

s = pd.Series(['2015-05-13 23:53:00', '2015-05-13 23:53:00'])
>>> pd.DataFrame(
    'date': pd.to_datetime(s).dt.date,
    'time': pd.to_datetime(s).dt.time)
    date    time
0   2015-05-13  23:53:00
1   2015-05-13  23:53:00

【讨论】:

您可以将时间列值保存为 12 小时格式而不是 24 小时格式吗??? @sanster9292 见this。 阿米,我不太擅长这个。我有一个看起来像这样的熊猫列中的数据。 1999-01-01T00:00:29.75 我想拆分并保存它和东部夏令时间。我将如何处理那里的T?这就是我目前正在做的事情, df3['Day']=pd.to_datetime(df['Date'], format='%Y-%m-%d %H:%M:%S.%f', errors='coerce').dt.tz_localize('UTC') @sanster9292 你能问这个问题吗?评论不适用于这些东西。很多人会帮助你。【参考方案2】:

如果您的 Dates 列是字符串:

data['Day'], data['Time'] = zip(*data.Dates.str.split())

>>> data
                 Dates         Day      Time
0  2015-05-13 23:53:00  2015-05-13  23:53:00
1  2015-05-13 23:53:00  2015-05-13  23:53:00
2  2015-05-13 23:33:00  2015-05-13  23:33:00
3  2015-05-13 23:33:00  2015-05-13  23:33:00
4  2015-05-13 23:33:00  2015-05-13  23:33:00

如果是时间戳:

data['Day'], data['Time'] = zip(*[(d.date(), d.time()) for d in data.Dates])

【讨论】:

【参考方案3】:

如果Dates 的列类型为字符串,则将其转换为to_datetime。然后你可以使用dt.datedt.time和最后一个drop原始列Dates

print df['Dates'].dtypes
object
print type(df.at[0, 'Dates'])
<type 'str'>

df['Dates'] = pd.to_datetime(df['Dates'])

print df['Dates'].dtypes
datetime64[ns]

print df
                Dates
0 2015-05-13 23:53:00
1 2015-05-13 23:53:00
2 2015-05-13 23:33:00
3 2015-05-13 23:30:00
4 2015-05-13 23:30:00

df['Date'] = df['Dates'].dt.date
df['Time'] = df['Dates'].dt.time

df = df.drop('Dates', axis=1)
print df
         Date      Time
0  2015-05-13  23:53:00
1  2015-05-13  23:53:00
2  2015-05-13  23:33:00
3  2015-05-13  23:30:00
4  2015-05-13  23:30:00

【讨论】:

【参考方案4】:

attrgetter + pd.concat + join

您可以使用operator.attrgetterpd.concat 将任意数量的datetime 属性作为单独的系列添加到您的数据框:

from operator import attrgetter

fields = ['date', 'time']
df = df.join(pd.concat(attrgetter(*fields)(df['Date'].dt), axis=1, keys=fields))

print(df)

                 Date        date      time
0 2015-05-13 23:53:00  2015-05-13  23:53:00
1 2015-01-13 15:23:00  2015-01-13  15:23:00
2 2016-01-13 03:33:00  2016-01-13  03:33:00
3 2018-02-13 20:13:25  2018-02-13  20:13:25
4 2017-05-12 06:52:00  2017-05-12  06:52:00

【讨论】:

以上是关于Matlab中tabel如何按照日期列拆分的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python从csv中的同一列拆分日期和时间?

如何将包含日期时间的 DataFrame 列拆分为两列:一列包含日期,另一列包含一天中的时间?

在python中将日期时间拆分为年和月列

如何从 Mysql 中的另一个表向表中添加列?

如何根据表格第一列拆分出不同的sheet?

熊猫如何按间隔按列拆分数据帧