小编And*_*den的帖子

Python:使用另一个大字典更新大字典

我试图使用来自另一个字典的值来更新大字典的某些值,在这些字典中它们具有相似的键(相同的日期但是格式不同).我目前使用的过程太慢,我想减少瓶颈.

这是我目前的解决方案(它将更新的dict写入文件):

from dateutil import parser
File = open(r'E:Test1.txt','w')

b = {'1946-1-1':0,..........,'2012-12-31':5}
d = {'1952-12-12':5,........,'1994-7-2':10}

for key1, val1 in b.items():
    DateK1 = parser.parse(key1)
    Value = val1
    for key2, val2 in d.items():
        DateK2 = parser.parse(key2)
        if DateK1 == DateK2:
            d[key2] = Value        

Order= sorted(d.items(), key=lambda t: t[0])

for item in Order:
    File.write('%s,%s\n' % item)
File.close()
Run Code Online (Sandbox Code Playgroud)

python dictionary python-2.7

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

在熊猫数据框中获得平日几个小时的平均值

几年来,我有以下格式的每小时数据帧:

Date/Time            Value
01.03.2010 00:00:00  60
01.03.2010 01:00:00  50
01.03.2010 02:00:00  52
01.03.2010 03:00:00  49
.
.
.
31.12.2013 23:00:00  77
Run Code Online (Sandbox Code Playgroud)

我想平均数据,这样我就可以得到每年的0小时,1小时......小时23的平均值.

所以输出应该看起来像这样:

Year Hour           Avg
2010 00              63
2010 01              55
2010 02              50
.
.
.
2013 22              71
2013 23              80
Run Code Online (Sandbox Code Playgroud)

有谁知道如何在熊猫中获得这个?

python statistics datetime average pandas

12
推荐指数
1
解决办法
8308
查看次数

根据日期值过滤pandas Dataframe

我使用pandas从csv文件导入以下数据read_csv:

 instrument         type   from_date  to_date   
0   96000001    W/D & V/L  19951227  19960102
1   96000002   DEED TRUST  19951227  19960102
2   96000003  WARNTY DEED  19951228  19960102
3   96000004   DEED TRUST  19951228  19960102
4   96000005    W/D & V/L  19951228  19960102
Run Code Online (Sandbox Code Playgroud)

我想选择那些符合日期或日期范围的行.比如我想用日期,只选择那些排19951227from_date列或选择天,范围从from_date19951227to_date 19960102.

我该怎么做?

date pandas

11
推荐指数
1
解决办法
6476
查看次数

在 python 中将输出捕获为 tty

我有一个需要 tty (如 stdin 和 stderr)的可执行文件,并且希望能够测试它。我想输入 stdin,并捕获 stdout 和 stderr 的输出,这是一个示例脚本:

# test.py
import sys
print("stdin: {}".format(sys.stdin.isatty()))
print("stdout: {}".format(sys.stdout.isatty()))
print("stderr: {}".format(sys.stderr.isatty()))
sys.stdout.flush()
line = sys.stdin.readline()
sys.stderr.write("read from stdin: {}".format(line))
sys.stderr.flush()
Run Code Online (Sandbox Code Playgroud)

我可以在没有 tty 的情况下运行它,但是它会被捕获.isatty并且每个都返回 False:

import subprocess
p = subprocess.Popen(["python", "test.py"], stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
p.stdin.write(b"abc\n")
print(p.communicate())
# (b'stdin: False\nstdout: False\nstderr: False\n', b'read from stdin: abc\n')
Run Code Online (Sandbox Code Playgroud)

我想捕获 stdout 和 stderr 并让所有三个返回 True - 作为 tty。

我可以用来pty制作 tty 标准输入:

import subprocess
m, s = pty.openpty()
p = subprocess.Popen(["python", "test.py"], …
Run Code Online (Sandbox Code Playgroud)

python subprocess popen tty

10
推荐指数
1
解决办法
4553
查看次数

在dthon中将dict转换为已排序的dict

我想在dthon中将dict转换为已排序的dict

data = pandas.read_csv('D:\myfile.csv')
for colname, dtype in data.dtypes.to_dict().iteritems():
    if dtype == 'object':
        print colname
        count = data[colname].value_counts()
        d = dict((str(k), int(v)) for k, v in count.iteritems())
        f = dict(sorted(d.iteritems(), key=lambda item: item[1], reverse = True)[:5])
        print f

        m ={}
        m["count"]= int(sum(count))    
        m["Top 5"]= f    
        print m    
        k = json.dumps(m)
        print k    
f = {'Gears of war 3': 6, 'Batman': 5, 'gears of war 3': 4, 'Rocksmith': 5, 'Madden': 3}
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

f = {'Gears of war 3': 6, 'Batman': 5, …
Run Code Online (Sandbox Code Playgroud)

python sorteddictionary pandas

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

使用Python中的公共列连接表/ DataFrame

我有两个DataFrame:

df1 = ['Date_Time',
    'Temp_1',
    'Latitude',
    'N_S',
    'Longitude',
    'E_W']

df2 = ['Date_Time',
    'Year',
    'Month',
    'Day',
    'Hour',
    'Minute',
    'Seconds']
Run Code Online (Sandbox Code Playgroud)

正如您可以看到,两个DataFrame都Date_Time具有公共列.我希望通过匹配来加入这两个DataFrame Date_Time.

我当前的代码是:df.join(df2, on='Date_Time'),但这是一个错误.

python pandas

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

如何识别Python pandas Dataframe中重复行的第一次出现

我有一个pandas DataFrame,其中包含一组列的重复值.例如:

df = pd.DataFrame({'Column1': {0: 1, 1: 2, 2: 3}, 'Column2': {0: 'ABC', 1: 'XYZ', 2: 'ABC'}, 'Column3': {0: 'DEF', 1: 'DEF', 2: 'DEF'}, 'Column4': {0: 10, 1: 40, 2: 10})

In [2]: df
Out[2]: 
   Column1 Column2 Column3  Column4 is_duplicated  dup_index
0        1     ABC     DEF       10         False          0
1        2     XYZ     DEF       40         False          1
2        3     ABC     DEF       10          True          0
Run Code Online (Sandbox Code Playgroud)

第(1)行和第(3)行相同.基本上,Row(3)是Row(1)的副本.

我正在寻找以下输出:

Is_Duplicate,包含行是否重复[可以通过在数据帧列(Column2,Column3和Column4)上使用"重复"方法来完成]

Dup_Index 重复行的原始索引.

In [3]: df
Out[3]: 
   Column1 Column2 Column3  Column4  Is_Duplicate  Dup_Index
0 …
Run Code Online (Sandbox Code Playgroud)

dataframe python-2.7 pandas

8
推荐指数
1
解决办法
9237
查看次数

根据最近的日期,Pandas Aggregate/Group

我有一个DataFrame如下,其中Id是一个字符串,Date是一个日期时间:

Id    Date
1     3-1-2012
1     4-8-2013
2     1-17-2013
2     5-4-2013
2     10-30-2012
3     1-3-2013
Run Code Online (Sandbox Code Playgroud)

我想整合表格,为每个具有最新日期的Id显示一行.
有关如何做到这一点的任何想法?

python-2.7 pandas

8
推荐指数
1
解决办法
3551
查看次数

反转pandas DataFrame中的索引和列

我有一个带有单行的pandas DataFrame:

         10  20  30  70
data1:  2.3   5   6   7
Run Code Online (Sandbox Code Playgroud)

我想重新索引框架,以便列值(10,20,30,70)成为索引值,数据成为列:

    data1:
10     2.3
20     5.0
30     6.0
70     7.0
Run Code Online (Sandbox Code Playgroud)

我该如何实现这一目标?

python pandas

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

比较两列2个不同的pandas数据帧,如果相同,则在Python中将1插入另一个

我有一个带有date_time/voltage数据的熊猫DataFrame,如下所示(df1):

        Date_Time  Chan
0   20130401 9:00   AAT
1  20130401 10:00   AAT
2  20130401 11:00   AAT
3  20130401 12:00   AAT
4  20130401 13:00   AAT
5  20130401 14:00   AAT
6  20130401 15:00   AAT
Run Code Online (Sandbox Code Playgroud)

我使用它作为原型来加载来自更大的数据文件的数据并创建一个DataFrame.另一个DataFrame看起来像这样(df2):

Chan          date_time  Sens1  Sens2 
 AAC  01-Apr-2013 09:00   5.17   1281
 AAC  01-Apr-2013 10:00   5.01    500
 AAC  01-Apr-2013 12:00   5.17    100
 AAC  01-Apr-2013 13:00   5.19  41997
 AAC  01-Apr-2013 16:00   5.21   2123
 AAT  01-Apr-2013 09:00  28.82    300
 AAT  01-Apr-2013 10:00  28.35   4900
 AAT  01-Apr-2013 12:00  28.04    250
 AAE  01-Apr-2013 11:00   3.36 …
Run Code Online (Sandbox Code Playgroud)

python-3.x pandas

8
推荐指数
1
解决办法
6396
查看次数