【发布时间】:2014-11-14 21:21:02
【问题描述】:
我一直在 excel 中打开一个 .csv 文件(来自 MS SQL 2012),并使用公式。
我的数据从 300K 跳到 3.5mm 行,再也装不下了。 (提示笑声)
我一直在玩 R,并仔细研究了 dplyr 的变异。
然而,我需要做的似乎比 R 的出色数据操作更进一步。
我正在根据对下一行操作的逻辑添加新列,有时是数字,有时是字符串。
我是一个 python 新手,并且有一种预感,对于这个特定的任务,它可能是比 R 更好的工具,也许不是。
我四处寻找和搜索,仍然没有找到与我面临的问题类似的示例。
我以前在这个 source.csv 中放过
id,event,eventDate,direction
id1,apple,1977-06-26 00:00:00.000,positive
id1,apple,1980-07-01 00:00:00.000,positive
id1,candy,1980-05-01 00:00:00.000,negative
id1,apple,1980-11-21 00:00:00.000,positive
id2,fruit,1980-06-26 00:00:00.000,positive
id2,cookie,1990-06-26 00:00:00.000,negative
id2,cavity,1991-07-15 00:00:00.000,negative
id2,apple,1991-07-16 00:00:00.000,positive
id2,apple,1997-01-16 00:00:00.000,positive
id3,cookie,2010-04-20 00:00:00.000,negative
id4,cookie,2010-04-20 00:00:00.000,negative
id4,cookie,2010-04-20 00:00:01.000,negative
并创建这个 output.csv
id,event,eventDate,direction,idEventNumber,nextEvent,daysUntilNextEvent
id1,apple,1977-06-26 00:00:00.000,positive,1000,negative,1040
id1,apple,1980-07-01 00:00:00.000,positive,1001,positive,143
id1,candy,1980-05-01 00:00:00.000,negative,1002,positive,61
id1,apple,1980-11-21 00:00:00.000,positive,1003,noFurtherEvent,-1
id2,fruit,1980-06-26 00:00:00.000,positive,1000,negative,3652
id2,cookie,1990-06-26 00:00:00.000,negative,1001,negative,384
id2,cavity,1991-07-15 00:00:00.000,negative,1002,positive,1
id2,apple,1991-07-16 00:00:00.000,positive,1003,positive,2011
id2,apple,1997-01-16 00:00:00.000,positive,1004,noFurtherEvent,-1
id3,cookie,2010-04-20 00:00:00.000,negative,1000,noFurtherEvent,-1
id4,cookie,2010-04-20 00:00:00.000,negative,1000,negative,0
id4,cookie,2010-04-20 00:00:01.000,negative,1001,noFurtherEvent,-1
我的新专栏将
-对事件编号(从 1000 开始,检查下一行的 id 是否匹配,如果匹配,则添加一个,否则从 @ 1000 开始)
- 复制下一个事件(如果存在)
-count daysUntilNextEvent(mssql 日期时间输出之间的数学运算,没有小数天数,-1 表示最后一个事件)
你会如何解决这个问题?
感谢您的时间|想法|鼓励|指针|示例。
更正:上面的原始 output.csv 示例包含一个错误,该示例已得到更正,但这发生在多次快速响应之后,因此他们的正确问题和 cmets 现在可能看起来不合适。
【问题讨论】:
-
Powershell 可以很容易地做到这一点。我想像(psudocode)
Import-CSV $path | ForEach{add-member calls to $lastline; output $lastline object to pipe;$lastline=$_} | Export-CSV $newpath -
第二行和第三行的
eventDate值似乎互换了。这是故意的吗? -
我不小心调换了07和05的日期,但是很多回复都解决了上述信息,所以我留下了他们的订单并更正了output.csv
标签: python r powershell csv dplyr