Python 如何调用需要带“的字符串”的函数;引号;?
我正试图在Mathematica上编写一个小脚本,用它绘制我使用Python获得的一组特定数据。 数据输出如下: 它是一个标准的datetime对象,正在回显到tsv文件中Python 如何调用需要带“的字符串”的函数;引号;?,python,string,wolfram-mathematica,raspberry-pi,Python,String,Wolfram Mathematica,Raspberry Pi,我正试图在Mathematica上编写一个小脚本,用它绘制我使用Python获得的一组特定数据。 数据输出如下: 它是一个标准的datetime对象,正在回显到tsv文件中 2014-03-29 08:39:37.080834 04 0.403980970383 0.2 2014-03-29 08:39:39.449200 04 0.383723974228 0.2 2014-03-29 08:39:42.603058 04 0.475341081619 0.2 2014-03
2014-03-29 08:39:37.080834 04 0.403980970383 0.2
2014-03-29 08:39:39.449200 04 0.383723974228 0.2
2014-03-29 08:39:42.603058 04 0.475341081619 0.2
2014-03-29 08:39:44.882941 04 0.303984165192 0.2
2014-03-29 08:39:47.021998 04 0.312470912933 0.2
2014-03-29 08:39:48.951891 04 0.312346935272 0.2
第一列是datetime对象,时间和日期由空格分隔,而不是\t。接下来的3列是用a\t分隔的,但与手头的问题无关(尽管如果有人感兴趣,我很乐意告诉他们它们的意思)
所以我要做的是将第一列导入Mathematica,这样我就可以将第一列和第二列(即日期和时间(x轴)与04s(y轴,表示事件))进行图形化。
为此,我做了以下工作:
data = Import["/home/pi/Desktop/data.tsv"]
dates = data[[;;,1]]
DateList[dates]
但最后一行是我出错的地方。我知道一个事实,如果我调用DateList函数,并在“引号”中给它一个日期对象,它会工作,但由于某些原因,这些字符串不在引号中,它会返回一个错误。该错误表示无法将输入解释为日期或时间输入
我尝试过使用DateList[dates//InputForm[%]之类的东西,但仍然不起作用
请帮助我理解Mathematica中字符串是如何工作的!:)
美联储我对mathematica没有任何经验,但应该很容易确保每个日期都有引号:
data = Import["/home/pi/Desktop/data.tsv"]
dates = data[[;;,1]]
dates = ['"' + date + '"' for date in dates]
DateList[dates]
仅供参考,我假设
日期中的每个日期都是一个字符串。日期的字符串格式包括“-”和“:”。Datelist的文档声称您应该能够给它一个格式字符串,并让它从字符串中提取日期,但多次尝试都失败了。仔细研究文档的细节,看看是否可以为它提供一种有效的字符串格式。或者只是做一点字符串黑客和提取您自己的字段和完成它
In[1]:= data = Import["data.tsv"];
dates = data[[;; , 1]];
fixeddates = Map[ToExpression["{" <> StringReplace[#,
{"-" -> ",", " " -> ",", ":" -> ","}] <> "}"] &, dates]
Out[3]= {{2014, 3, 29, 8, 39, 37.0808}, {2014, 3, 29, 8, 39, 39.4492},
{2014, 3, 29, 8, 39, 42.6031}, {2014, 3, 29, 8, 39, 44.8829},
{2014, 3, 29, 8, 39, 47.022}, {2014, 3, 29, 8, 39, 48.9519}}
但事实并非如此
In[19]:= DateList[{"2014-03-29 08:39:48.951891", {"Year", "-", "Month",
"-", "Day", " ", "Hour", ":", "Minute", ":", "Second"}}]
During evaluation of In[19]:= DateString::str: String 2014-03-29 08:39:48.951891 cannot be interpreted as a date in format {Year,-,Month,-,Day, ,Hour,:,Minute,:,Second}. >>
Out[19]= DateList[{"2014-03-29 08:39:48.951891", {"Year", "-",
"Month", "-", "Day", " ", "Hour", ":", "Minute", ":", "Second"}}]
因此,Datelist将提取整数秒,而不是实际秒,即使文档中说“天、小时、分钟和秒的值可以是非整数:”
除非其他人能提出一个很好的解释,看起来真的像个bug
显示如何绘制数据的编辑
data = Import["data.tsv"];
points = data[[All, {1, 3}]]; (*extract date and 3rd column*)
fixedpoints = Map[{ToExpression["{" <> StringReplace[First[#],
{"-" -> ",", " " -> ",", ":" -> ","}] <> "}"], Last[#]} &, points];
DateListPlot[fixedpoints, PlotStyle -> PointSize[0.02]]
...PlotSnipped...
data=Import[“data.tsv”];
点=数据[[全部,{1,3}]];(*提取日期和第三列*)
fixedpoints=Map[{ToExpression[“{”StringReplace[First[#],
{“-”->“,”,“->”,“,”:“->”,“}]“}”],最后一个[#]}&,点];
DateListPlot[固定点,打印样式->点大小[0.02]]
…被剪掉了。。。
这非常有趣!非常感谢你!如何绘制数据??我尝试调用DatePlotList函数,但它仍然只返回数字列表。我认为需要将它们放在日期列表对象中。我想我会尝试将秒截断为整数秒。但我仍然不知道如何在数字周围加引号……这太棒了!它起作用了!这正是我想做的。由于某种原因,我无法将这两个列表以这样一种方式组合起来,即你是你有{{{年,月,日},事件}我不知道怎么做。再次感谢!!!以防万一你真的不需要Mathematica:你知道python可以自己绘制这样的数据,对吗?有关示例,请参见。(如今,除了一些符号数学,没有理由使用Mathematica进行任何事情,偶尔也会使用Mathematica的策划数据,除非你的老板/教授让你使用它。)
data = Import["data.tsv"];
points = data[[All, {1, 3}]]; (*extract date and 3rd column*)
fixedpoints = Map[{ToExpression["{" <> StringReplace[First[#],
{"-" -> ",", " " -> ",", ":" -> ","}] <> "}"], Last[#]} &, points];
DateListPlot[fixedpoints, PlotStyle -> PointSize[0.02]]
...PlotSnipped...