小编EmE*_*mEs的帖子

从pandas中的csv解析datetime不会产生DateTimeIndex

我正在探索熊猫 - 试图学习和应用它.目前我有一个csv文件,其中填充了以下结构的金融时间序列数据:

date, time, open, high, low, close, volume 2003.04.08,12:00,1.06830,1.06960,1.06670,1.06690,446 2003.04.08,13:00,1.06700,1.06810,1.06570,1.06630,433 2003.04.08,14:00,1.06650,1.06810,1.06510,1.06670,473 2003.04.08,15:00,1.06670,1.06890,1.06630,1.06850,556 2003.04.08,16:00,1.06840,1.07050,1.06610,1.06680,615

现在我想将csv数据转换为pandas DataFrame对象,以便日期和时间字段合并并成为DataFrame的DateTimeIndex,如下所示:

df = pa.read_csv(path,
                 names = ['date', 'time', 'open', 'high', 'low', 'close', 'vol'],
                 parse_dates = {'dateTime': ['date', 'time']},  
                 index_col = 'dateTime')
Run Code Online (Sandbox Code Playgroud)

这可以产生一个很好的DataFrame对象:

<class 'pandas.core.frame.DataFrame'>
Index: 8676 entries, 2003.04.08 12:00 to nan nan
Data columns (total 5 columns):
open     8675  non-null values
high     8675  non-null values
low      8675  non-null values
close    8675  non-null values
vol      8675  non-null values
dtypes: float64(5)
Run Code Online (Sandbox Code Playgroud)

但经过检查,结果证明Index不是DataTimeIndex而是unicode字符串:

type(df.index)
>>> pandas.core.index.Index
df.index …
Run Code Online (Sandbox Code Playgroud)

python csv pandas

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

如何按行连接包含字符串的多列?

我有一系列特定的数据集,它们采用以下一般形式:

import pandas as pd
import random
df = pd.DataFrame({'n': random.sample(xrange(1000), 3), 't0':['a', 'b', 'c'], 't1':['d','e','f'], 't2':['g','h','i'], 't3':['i','j', 'k']})
Run Code Online (Sandbox Code Playgroud)

tn列的数量(t0, t1, t2 ... tn因数据集而异,但始终小于 30。我的目标是合并每一行的tn列的内容,以便获得此结果(请注意,为了便于阅读,我需要保留元素之间的空格):

df['result'] = df.t0 +' '+df.t1+' '+df.t2+' '+ df.t3
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

到现在为止还挺好。这段代码可能很简单,但是一旦我收到另一个数据集,它就会变得笨拙和不灵活,其中tn列的数量增加了。这就是我的问题所在:

是否有其他语法可以跨多列合并内容?与数字列无关的东西,类似于:

df['result'] = ' '.join(df.ix[:,1:])
Run Code Online (Sandbox Code Playgroud)

基本上我想实现与下面链接中的 OP 相同的效果,但字符串之间有空格: R - 跨数据框的特定列按行连接

python string-concatenation multiple-columns dataframe pandas

5
推荐指数
1
解决办法
3543
查看次数

REQ / REP模式中的ZeroMQ FiniteStateMachineException

我有两个简单的组件,应该使用REQ / REP ZeroMQ模式相互通信。服务器(REP套接字)是使用pyzmq在Python中实现的:

import zmq

def launch_server():
    print "Launching server"
    with zmq.Context.instance() as ctx:
        socket = ctx.socket(zmq.REP)
        socket.bind('tcp://127.0.0.1:5555')

        while True:
            msg = socket.recv()
            print "EOM\n\n"
Run Code Online (Sandbox Code Playgroud)

使用NetMQ库以C#编写的客户端(REQ套接字):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NetMQ;


namespace PyNetMQTest
{
    class Program
    {

        static void Main(string[] args)
        {
            string msg;
            NetMQ.Sockets.RequestSocket socket = new NetMQ.Sockets.RequestSocket();
            socket.Connect("tcp://127.0.0.1:5555");
            for(int i=0; i<5; i++)
                socket.SendFrame("test_"+i);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

通过与使用Python实现的REQ套接字进行通讯,Python Server实现已经过测试,可以正常工作。但是C#REQ套接字在循环的第一次迭代中引发以下错误,并且任何消息都不会到达服务器:

NetMQ.dll中发生了'NetMQ.FiniteStateMachineException'类型的未处理异常。其他信息:Req.XSend-无法发送另一个请求

堆栈跟踪:

at NetMQ.Core.Patterns.Req.XSend(Msg& msg)
   at NetMQ.Core.SocketBase.TrySend(Msg& msg, TimeSpan timeout, Boolean more) …
Run Code Online (Sandbox Code Playgroud)

c# python zeromq pyzmq netmq

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