如何使用Scala Stream读取大型CSV文件(> 1 Gb)?你有代码示例吗?或者您是否会使用不同的方式来读取大型CSV文件而不先将其加载到内存中?
我有DataFrame
一些列.一列包含正在使用其货币的符号,例如欧元或美元符号.另一列包含预算值.因此,例如在一行中它可能意味着5000欧元的预算,而在下一行它可以说2000美元的预算.
在pandas中,我想在我的DataFrame中添加一个额外的列,以欧元标准化预算.所以基本上,对于每一行,如果货币列中的符号是欧元符号,则新列中的值应该是预算列*1中的值,新列中的值应该是预算列的值*如果货币栏中的符号是美元符号,则为0.78125.
我知道如何添加一列,其值填充它,从另一列等的值复制但不知道如何有条件地基于其他列的值填充新列.
有什么建议?
我有一个简单的Scala代码.我循环遍历一个字符串列表,我想计算每个字符串的出现,我收集为列表r中的元组(String,Int).主函数中的部分应该保留(所以没有groupBy
或者什么).我的问题是关于更新功能:
现在我先做一个find
,然后在r中添加一个新元组,如果它不存在的话.如果确实存在,我循环遍历r并更新匹配String的计数器.
可以修改更新功能,以便更有效吗?可以在一次迭代中更新(如果它不存在则添加,如果它存在则更新计数器)?
谢谢
var r = List[(String, Int)]() // (string, count)
def update(s: String, l: List[(String, Int)]) : List[(String, Int)] = {
if (r.find(a => a._1 == s) == None) {
(s, 1) :: r // add a new item if it does not exist
} else {
for (b <- l) yield {
if (b._1 == s) {
(b._1, b._2 + 1) // update counter if exists
} else {
b // just yield …
Run Code Online (Sandbox Code Playgroud)