小编Mat*_*uer的帖子

创建一个空的Pandas DataFrame,然后填充它?

我从这里的pandas DataFrame文档开始:http://pandas.pydata.org/pandas-docs/stable/dsintro.html

我想迭代地使用时间序列计算中的值填充DataFrame.基本上,我想用列A,B和时间戳行初始化DataFrame,全部为0或全部为NaN.

然后,我会添加初始值并检查此数据,计算前一行中的新行,row[A][t] = row[A][t-1]+1或者说左右.

我目前正在使用下面的代码,但我觉得它有点难看,必须有一种方法可以直接使用DataFrame,或者只是更好的方式.注意:我使用的是Python 2.7.

import datetime as dt
import pandas as pd
import scipy as s

if __name__ == '__main__':
    base = dt.datetime.today().date()
    dates = [ base - dt.timedelta(days=x) for x in range(0,10) ]
    dates.sort()

    valdict = {}
    symbols = ['A','B', 'C']
    for symb in symbols:
        valdict[symb] = pd.Series( s.zeros( len(dates)), dates )

    for thedate in dates:
        if thedate > dates[0]:
            for symb in valdict:
                valdict[symb][thedate] = 1+valdict[symb][thedate - dt.timedelta(days=1)]

    print valdict
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

381
推荐指数
4
解决办法
105万
查看次数

从 Python 发送电报消息

我想通过 Telegram 从 Python 脚本发送消息。我试图通过电报 cli 做到这一点,包括来自 vysheng原始版本来自luckydonald补丁版本。有了他们,我可以成功地向我的手机发送消息。我的问题是:

  • pytg2 没有安装干净(导入 DictObject 失败,显然作者在 pypi 上有这个,但我在那点停止了),需要 Python 3(不像我的项目的其余部分,但半可接受)并且可以做的不仅仅是我需要。
  • 我无法输入然后在那里执行的 tg 控制台环境。<<EOF ... EOF在这个SO 问题中通过as输入失败;该程序在控制台上打开,但不输出任何内容。
  • 通过 -P 选项打开端口有效。然后我可以在 nc 环境中操作(类似于tg wiki),但我不确定在我的 Python 脚本中实现所有这些调用是否明智。

  • 我还发现了另一个将命令回显到 tg 中的脚本(忘记源代码),但它也不起作用(与<<EOF上述行为类似)

    #!/bin/bash
    to=Matthias_SG
    msg="test message"
    tgpath=/home/matthias/dvl/tg
    cd ${tgpath}
    (echo "add_contact +xxx Matthias SG"; echo "msg $to $msg") | ${tgpath}/bin/telegram-cli -k tg-server.pub
    
    Run Code Online (Sandbox Code Playgroud)

所以我的问题是:我应该回到旧的 pytg 吗?我可以通过从 subprocess.call 或 popen 输入 stringIO 来修复 shell 脚本或将它们修改为 …

python linux telegram

13
推荐指数
2
解决办法
3万
查看次数

Python正则表达式(正则表达式)匹配逗号分隔数 - 为什么这不起作用?

我正在尝试解析我(德国)银行的交易信件.我想从以下字符串中提取所有数字,结果证明比我想象的更难.选项2几乎完全符合我的要求.我现在想要修改它以捕获例如80.

我的第一次尝试是选项1,它只返回垃圾.为什么它会返回这么多空字符串?应该始终至少有一个来自第一个\ d +的数字,不是吗?

选项3起作用(或者至少按预期工作),所以我不知何故回答了我自己的问题.我想我大部分都在抱怨为什么选项2不起作用.

# -*- coding: utf-8 -*-
import re


my_str = """
Dividendengutschrift für inländische Wertpapiere

Depotinhaber    : ME

Extag           :  18.04.2013          Bruttodividende
Zahlungstag     :  18.04.2013          pro Stück       :       0,9800 EUR
Valuta          :  18.04.2013

                                       Bruttodividende :        78,40 EUR
                                      *Einbeh. Steuer  :        20,67 EUR
                                       Nettodividende  :        78,40 EUR

                                       Endbetrag       :        57,73 EUR
"""

print re.findall(r'\d+(,\d+)?', my_str)
print re.findall(r'\d+,\d+', my_str)
print re.findall(r'[-+]?\d*,\d+|\d+', my_str)
Run Code Online (Sandbox Code Playgroud)

输出是

['', '', '', '', '', '', ',98', '', '', '', '', ',40', ',67', ',40', ',73'] …
Run Code Online (Sandbox Code Playgroud)

python regex

9
推荐指数
2
解决办法
1万
查看次数

标签 统计

python ×3

dataframe ×1

linux ×1

pandas ×1

regex ×1

telegram ×1