小编jpp*_*jpp的帖子

DataFrame:添加具有组大小的列

我有以下数据帧:

    fsq digits  digits_type
0    1   1       odd
1    2   1       odd
2    3   1       odd
3    11  2       even
4    22  2       even
5    101 3       odd
6    111 3       odd
Run Code Online (Sandbox Code Playgroud)

我想添加一个最后一列,count包含属于数字组的fsq ,即:

    fsq digits  digits_type   count
0    1   1       odd          3
1    2   1       odd          3
2    3   1       odd          3
3    11  2       even         2
4    22  2       even         2
5    101 3       odd          2
6    111 3       odd          2
Run Code Online (Sandbox Code Playgroud)

由于有3个 …

python pandas pandas-groupby

12
推荐指数
2
解决办法
3859
查看次数

访问包含列表的Pandas DataFrame列的每个第1个元素

我有一个Pandas DataFrame,其中包含列表对象的列

      A
0   [1,2]
1   [3,4]
2   [8,9] 
3   [2,6]
Run Code Online (Sandbox Code Playgroud)

如何访问每个列表的第一个元素并将其保存到DataFrame的新列中?要得到这样的结果:

      A     new_col
0   [1,2]      1
1   [3,4]      3
2   [8,9]      8
3   [2,6]      2
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过遍历每一行来完成,但是有任何"pythonic"方式吗?

python dataframe pandas

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

如何在Python中使用IF ALL语句

我有一个名为checker(nums)的函数,它有一个参数,稍后会收到一个列表.我想对该列表做的是检查每个其他元素是否大于或等于前一个元素.示例:我有一个列表[1, 1, 2, 2, 3],我必须检查它是否满足条件.既然如此,函数应该返回True

我的代码:

def checker(nums):
    for x in range(len(nums)):
        if x+1<len(nums):
            if nums[x] <= nums[x+1] and nums[-1] >= nums[-2]:
                return True
Run Code Online (Sandbox Code Playgroud)

这将只运行一次,如果第一个条件为真,则返回True.我已经看过一个声明,如果所有并且不确定如何使用它.

python sorting if-statement list conditional-statements

12
推荐指数
2
解决办法
2785
查看次数

如何使用索引和值迭代1d NumPy数组

对于python dict,我可以使用iteritems()同时循环键和值.但我找不到NumPy阵列的这种功能.我必须idx像这样手动跟踪:

idx = 0 
for j in theta:
   some_function(idx,j,theta)
   idx += 1
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

python arrays indexing iterator numpy

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

Pandas group by on groupby列表

给定的数据框结构如下:

rule_id | ordering | sequence_id
   1    |    0     |     12     
   1    |    1     |     13
   1    |    1     |     14
   2    |    0     |     1
   2    |    1     |     2
   2    |    2     |     12 
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为:

rule_id |  sequences
   1    |  [[12],[13,14]]
   2    |  [[1],[2],[12]]
Run Code Online (Sandbox Code Playgroud)

这似乎很容易组成groupby到列表操作 - 但我不能让它在熊猫中工作.

df.groupby(['rule_id', 'ordering'])['sequence_id'].apply(list)
Run Code Online (Sandbox Code Playgroud)

离开我

rule_id  ordering
1        0               [12]
         1            [13,14]
2        0                [1]
         1                [2]
         2               [12]
Run Code Online (Sandbox Code Playgroud)

如何应用另一个groupBy操作将结果进一步连接到一个列表中?

python dataframe pandas

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

根据pandas数据帧中的键列减去列

我有两个数据帧看起来像

DF1:

   ID    A   B   C   D 
0 'ID1' 0.5 2.1 3.5 6.6
1 'ID2' 1.2 5.5 4.3 2.2
2 'ID1' 0.7 1.2 5.6 6.0 
3 'ID3' 1.1 7.2 10. 3.2
Run Code Online (Sandbox Code Playgroud)

DF2:

   ID    A   B   C   D 
0 'ID1' 1.0 2.0 3.3 4.4
1 'ID2' 1.5 5.0 4.0 2.2
2 'ID3' 0.6 1.2 5.9 6.2 
3 'ID4' 1.1 7.2 8.5 3.0
Run Code Online (Sandbox Code Playgroud)

df1可以有多个相同的条目,ID而每个条目ID只在df2中出现一次.同样不是IDdf2中的所有都必须存在于df1中.我无法通过使用set_index()df1中的多行来解决这个问题ID,并且IDdf1和df2中没有对齐.

我想创建一个新的数据帧,我根据匹配ID 减去df2[['A','B','C','D']]from中的值df1[['A','B','C','D']]. …

python dataframe python-3.x pandas

12
推荐指数
2
解决办法
1858
查看次数

pandas - 如何获取groupby对象的最后n组并将它们组合为数据帧

如何获取最后的'n'组df.groupby()并将它们组合为数据帧.

data = pd.read_sql_query(sql=sqlstr, con=sql_conn, index_col='SampleTime')
grouped = data.groupby(data.index.date,sort=False)
Run Code Online (Sandbox Code Playgroud)

grouped.ngroups我做了我获得组277的总数.我想结合最后12组并生成数据帧.

python pandas pandas-groupby

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

将数据从CSV读取到具有多个分隔符的数据帧中

我有一个笨拙的CSV文件,它有多个分隔符:非数字部分的分隔符是','数字部分';'.我想尽可能高效地构建数字部分之外的数据框.

我做了5次尝试:其中,使用正则表达式,使用,使用的converters参数.它们比读取整个CSV文件慢2倍,没有转换.这对我的用例来说太慢了.pd.read_csvengine='python'str.replace

我知道这种比较不像是喜欢,但它确实表明整体不良的性能不是由I/O驱动的.有没有更有效的方法将数据读入数字Pandas数据帧?还是等效的NumPy数组?

以下字符串可用于基准测试目的.

# Python 3.7.0, Pandas 0.23.4

from io import StringIO
import pandas as pd
import csv

# strings in first 3 columns are of arbitrary length
x = '''ABCD,EFGH,IJKL,34.23;562.45;213.5432
MNOP,QRST,UVWX,56.23;63.45;625.234
'''*10**6

def csv_reader_1(x):
    df = pd.read_csv(x, usecols=[3], header=None, delimiter=',',
                     converters={3: lambda x: x.split(';')})
    return df.join(pd.DataFrame(df.pop(3).values.tolist(), dtype=float))

def csv_reader_2(x):
    df = pd.read_csv(x, header=None, delimiter=';',
                     converters={0: lambda x: x.rsplit(',')[-1]}, dtype=float)
    return df.astype(float)

def csv_reader_3(x):
    return pd.read_csv(x, usecols=[3, 4, …
Run Code Online (Sandbox Code Playgroud)

python csv performance dataframe pandas

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

使用pandas转换Excel样式日期

我必须解析一个xml文件,它以Excel样式提供日期时间; 例如:42580.3333333333.

Pandas是否提供了将该数字转换为常规datetime对象的方法?

python excel datetime date pandas

11
推荐指数
3
解决办法
7220
查看次数

通过字典有效地替换pandas系列中的值

如何s通过字典替换Pandas系列中的值d已被多次询问和重新询问.

推荐的方法(1,2,3,4)是要么使用s.replace(d),有时也使用s.map(d)如果所有的系列值是在字典键找到.

但是,使用性能s.replace通常非常慢,通常比简单的列表理解慢5-10倍.

替代方案,s.map(d)具有良好的性能,但仅在词典中找到所有键时才建议使用.

为什么s.replace这么慢,如何提高性能?

import pandas as pd, numpy as np

df = pd.DataFrame({'A': np.random.randint(0, 1000, 1000000)})
lst = df['A'].values.tolist()

##### TEST 1 #####

d = {i: i+1 for i in range(1000)}

%timeit df['A'].replace(d)                          # 1.98s
%timeit [d[i] for i in lst]                         # 134ms

##### TEST 2 #####

d = {i: i+1 for i in range(10)}

%timeit …
Run Code Online (Sandbox Code Playgroud)

python dictionary dataframe python-3.x pandas

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