【发布时间】:2019-02-08 16:16:13
【问题描述】:
用 lambda 或其他东西替换循环以提高运行速度
我有一个有效的循环,但对于我的真实数据集,它会太慢 我基本上有一个巨大的文本文件,每一行由 \n 字符分隔。
在每条唯一消息的开头都有一个独特的消息指纹,为此,假设它们以 # 开头。我已将这个 # (Y) 或不 (N) 的出现放在单独的列中,称为“开始”
我想查找不以 # 开头的行,如果下面的行也不以 # 开头,我想将两者连接起来。暂时忽略任何删除 \ns 的愿望,我已经解决了。
我的循环可以工作,但我怎样才能使用 lambda 函数或任何其他方式来获得良好的加速?
提前致谢
for i in range(2,(len(df)-1)):
if ((df['Beginning'][i] == 'N') and (df['Beginning'][i+1] == 'N')):
df['Message'][i] = df['Message'][i] + df['Message'][i+1]
df['Message'][i+1] = ""
尝试编辑以添加示例:
消息开始时间 01:01:2018:12:15:28 \n
bla bla 短信\n
关于问题位置的详细信息\n
其他方面的细节\n
消息开始时间 01:01:2018:12:16:78 \n
bla bla 短信类型 2 something xxxxxx \n
消息开始时间 01:01:2018:12:21:05 \n
bla bla 短信类型 3 something xxxxxx \n
这件事的详细位置\n
那个东西的详细位置\n
我的价格详情\n
为您提供价格详情\n
很多\n
更多\n
无聊\n
文字\n
消息开始时间 01:01:2018:12:35:01 \n
bla bla 短信类型 2 something xxxxxx \n
所以上面是 4 条不同的消息,不同的长度,我想连接文本,所以每条消息有一行,其中包含从头到尾的所有信息
【问题讨论】:
-
您能否澄清一下:我在您的代码中看到了
df- 您使用pandas.DataFrame吗? -
我在可视化您的示例输入时也遇到了麻烦。你能举一些例子吗?
-
是的,我正在使用 pandas,为提示喝彩
-
没有理由 lambda 会比您当前的解决方案更快。为了加快处理速度,您需要更改数据格式、处理或两者兼而有之。