小编not*_*las的帖子

Python:Pandas根据字符串长度过滤字符串数据

我想过滤掉字符串长度不等于10的数据.

如果我试图过滤掉列A或B的字符串长度不等于10的任何行,我试过这个.

df=pd.read_csv('filex.csv')
df.A=df.A.apply(lambda x: x if len(x)== 10 else np.nan)
df.B=df.B.apply(lambda x: x if len(x)== 10 else np.nan)
df=df.dropna(subset=['A','B'], how='any')
Run Code Online (Sandbox Code Playgroud)

这工作缓慢,但工作正常.

但是,当A中的数据不是字符串而是数字(当read_csv读取输入文件时解释为数字)时,它有时会产生错误.

  File "<stdin>", line 1, in <lambda>
TypeError: object of type 'float' has no len()
Run Code Online (Sandbox Code Playgroud)

我相信应该有更有效和优雅的代码而不是这个.

python csv string filter pandas

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

Python pandas:合并两个没有键的表(将2个数据帧与广播所有元素相乘; NxN数据帧)

我想合并2个数据帧与广播关系:没有公共索引,只想找到2个数据帧中的所有行对.所以想要使N行数据帧x M行dataframe = N*M行数据帧.有没有规则可以在不使用itertool的情况下实现这一目标?

DF1=
  id  quantity  
0  1        20  
1  2        23  

DF2=
      name  part  
    0  'A'   3  
    1  'B'   4  
    2  'C'   5  

DF_merged=
      id  quantity name part 
    0  1        20  'A'  3 
    1  1        20  'B'  4 
    2  1        20  'C'  5 
    3  2        23  'A'  3
    4  2        23  'B'  4
    5  2        23  'C'  5
Run Code Online (Sandbox Code Playgroud)

python merge broadcast outer-join pandas

7
推荐指数
1
解决办法
4680
查看次数

VS 代码:使用密码而不是令牌的 Jupyter 服务器连接

VS 代码jupyter扩展允许jupyter使用令牌身份验证连接到远程服务器。

http://X.Y.196.198:8888/?token=abcdefgxxxx

但是我团队的jupyter服务器配置为允许通过密码访问。在这种情况下,我如何连接到服务器?

authentication passwords token visual-studio-code jupyter-notebook

6
推荐指数
0
解决办法
621
查看次数

Python Pandas:Groupby日期,并按时间戳访问每个组

我想分组时间戳(日期)并通过时间戳访问每个组,时间戳看起来不正常.看起来组键被奇怪地索引为不同的格式.

df= pd.DataFrame({'DATE' : ['10-Oct-2013', '10-Oct-2013', '10-Oct-2013', '11-Oct-2013', '11-Oct-2013', '11-Oct-2013'],'VAL' : [1,2,3,4,5,6]})

>>> df
          DATE  VAL
0  10-Oct-2013    1
1  10-Oct-2013    2
2  10-Oct-2013    3
3  11-Oct-2013    4
4  11-Oct-2013    5
5  11-Oct-2013    6


dfg=df.groupby(df['DATE'].apply(lambda x: pd.to_datetime(x)))

>>> dfg.groups.keys()
[numpy.datetime64('NaT'), numpy.datetime64('2013-10-10T17:00:00.000000000-0700'), numpy.datetime64('2013-10-09T17:00:00.000000000-0700')]

for d in dfg.groups.keys():
    try:
        print d,dfg.get_group(d).describe()
    except:
        print 'err'
>>
NaT err
2013-10-10T17:00:00.000000000-0700 err
2013-10-09T17:00:00.000000000-0700 err

rng = pd.to_datetime(pd.date_range('10/10/2013', periods=3, freq='D'))

for d in rng:
    try:
        print d,dfg.get_group(d).describe()
    except:
        print 'err'

2013-10-10 00:00:00 err
2013-10-11 00:00:00 err …
Run Code Online (Sandbox Code Playgroud)

python datetime timestamp group-by pandas

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

Python sum()返回负值,因为总和对于32位整数来说太大了

x = [1, 2, 3, ... ]
y = sum(x)
Run Code Online (Sandbox Code Playgroud)

总和x是2165496761,它大于32位整数的限制因此sum(x)返回-2129470535.

如何通过将其转换为长整数来获得正确的值?

这是我的导入列表:

import math, csv, sys, re, time, datetime, pickle, os, gzip
from numpy import *
Run Code Online (Sandbox Code Playgroud)

python integer long-integer

3
推荐指数
1
解决办法
3672
查看次数

Python:Pandas,Dataframe,将1列数据转换为2D数据格式

这是Pandas数据帧我想将1D数据转换为2D数组形式

我如何转换自

  'A'  'B'  'C'
1  10   11   a  
2  10   12   b
3  10   13   c 
4  20   11   d  
5  20   12   e
6  20   13   f

to this 2d array as the following

   11 12 13
10  a  b  c 
20  d  e  f
Run Code Online (Sandbox Code Playgroud)

python transform dataframe pandas

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

python:在列表中查找匹配的元组

在另一个2元组列表中找到匹配的2元组的最快方法是什么?

以下代码效率极低.loc1和loc2是(x,y)坐标的元组列表.

loc3=[]
for loc in loc1:
    if loc in loc2:
        loc3.append(loc)
Run Code Online (Sandbox Code Playgroud)

我认为哈希是关键但不确定如何在Python上做到这一点.请教我一个优雅的代码.谢谢.

python tuples list integer-hashing

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

优化CSV处理脚本 - Python,Perl和Java

我正在尝试制作一个快速处理嘈杂的CSV文件的简单脚本.我只想从一个大的CSV文件(gzip)中抓取几列,然后用修剪后的数据写一个新的CSV文件.还添加了一个简单的过滤方法,用于检查列的长度[0] == 15.

我比较了perl,java和python脚本,发现Java比其他语言快得多.我想知道是否有任何其他方法可以优化每种语言的这个简单过程?

每种语言的基准时间是(对于800MByte gzip文件)1.Java:74sec 2.Python:197sec 3. Perl:7分钟

蟒蛇:

import gzip
import csv
import time

def getArray(row): 
    columns = [0,4,5,26,33,34,35,36,39,41,42,47,54,65,66,72,73,91]
    row_filt = []
    for i in columns:
        row_filt.append(row[i])
    return row_filt

filename = 'Very_large_csv.gz' 
outfile = filename + '.csv'
csv.register_dialect('wifi', delimiter='|', quoting=csv.QUOTE_NONE, quotechar = '')
start_time = time.time()

try:
    f = gzip.open(filename, 'rb')
    f2 = open(outfile, 'wb')
    reader = csv.reader(f, dialect = 'wifi')
    writer = csv.writer(f2, dialect = 'wifi')
    header = reader.next()
    writer.writerow(getArray(header))
    for row in reader:
        if (len(row[0]) != …
Run Code Online (Sandbox Code Playgroud)

python java csv perl parsing

0
推荐指数
1
解决办法
1196
查看次数