小编sac*_*cuL的帖子

从熊猫中的假人重建一个分类变量

pd.get_dummies允许将分类变量转换为虚拟变量.除了重建分类变量是微不足道的事实之外,还有一种首选/快速的方法吗?

python pandas

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

如何获取排序数组元素的索引

假设我在R中有一个数组:10 7 4 3 8 2在排序时,这将是:2 3 4 7 8 10

R中从原始数组返回已排序数组元素的索引的最佳方法是什么.我正在寻找一个输出: 6(索引2),4(索引3),3(索引4),2(索引7),5(索引8),1(索引10)

r

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

为什么要使用pandas.assign而不是简单地初始化新列?

我刚刚发现了assignpandas数据帧的方法,它看起来很漂亮,与mutateR中的dplyr非常相似.但是,我总是通过"动态"初始化一个新列来获得.有什么理由assign更好吗?

例如(基于pandas文档中的示例),要在数据框中创建新列,我可以这样做:

df = DataFrame({'A': range(1, 11), 'B': np.random.randn(10)})
df['ln_A'] = np.log(df['A'])
Run Code Online (Sandbox Code Playgroud)

pandas.DataFrame.assign文档建议这样做:

df.assign(ln_A = lambda x: np.log(x.A))
# or 
newcol = np.log(df['A'])
df.assign(ln_A=newcol)
Run Code Online (Sandbox Code Playgroud)

两种方法都返回相同的数据帧.实际上,第一种方法(我的'即时'方法)比.assign方法(1000次迭代的0.3526602769998135秒)明显更快(1000次迭代为0.20225788200332318秒).

那么我有理由停止使用旧方法df.assign吗?

python pandas

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

如何基于日期时间索引切片Pandas Dataframe

多年来,这一直困扰着我:

给定一个简单的熊猫DataFrame

>>> df

Timestamp     Col1
2008-08-01    0.001373
2008-09-01    0.040192
2008-10-01    0.027794
2008-11-01    0.012590
2008-12-01    0.026394
2009-01-01    0.008564
2009-02-01    0.007714
2009-03-01   -0.019727
2009-04-01    0.008888
2009-05-01    0.039801
2009-06-01    0.010042
2009-07-01    0.020971
2009-08-01    0.011926
2009-09-01    0.024998
2009-10-01    0.005213
2009-11-01    0.016804
2009-12-01    0.020724
2010-01-01    0.006322
2010-02-01    0.008971
2010-03-01    0.003911
2010-04-01    0.013928
2010-05-01    0.004640
2010-06-01    0.000744
2010-07-01    0.004697
2010-08-01    0.002553
2010-09-01    0.002770
2010-10-01    0.002834
2010-11-01    0.002157
2010-12-01    0.001034
Run Code Online (Sandbox Code Playgroud)

如何分隔它,以便新的DataFrame等于df中介于2009-05-01和之间的日期的条目2010-03-01

>>> df2

Timestamp     Col1
2009-05-01    0.039801
2009-06-01    0.010042
2009-07-01    0.020971
2009-08-01    0.011926 …
Run Code Online (Sandbox Code Playgroud)

python slice pandas

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

将每2个字符串组合为1个字符串

我有一个清单a

list = ['247400015203223811', 'DPF', '247400015203223813', 'ZPF']
Run Code Online (Sandbox Code Playgroud)

我想得到一个字符串列表,比如["247400015203223811, DPF", "247400015203223813, ZPF"] 将每2个字符串组合成1个字符串

我尝试过

list2 = []
list = ['247400015203223811', 'DPF', '247400015203223813', 'ZPF']

        for i in range(0, len(list), 2):
            list2.append(list[i] + list[i])
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

python list

9
推荐指数
4
解决办法
238
查看次数

矢量化方式,用于计算两列中任意一列的字符串出现次数

我有一个问题是类似这个问题,只是不同的不够,它不能用相同的解决方案来解决?

我有两个dataframes,df1并且df2,像这样:

import pandas as pd
import numpy as np
np.random.seed(42)
names = ['jack', 'jill', 'jane', 'joe', 'ben', 'beatrice']
df1 = pd.DataFrame({'ID_a':np.random.choice(names, 20), 'ID_b':np.random.choice(names,20)})    
df2 = pd.DataFrame({'ID':names})

>>> df1
        ID_a      ID_b
0        joe       ben
1        ben      jack
2       jane       joe
3        ben      jill
4        ben  beatrice
5       jill       ben
6       jane       joe
7       jane      jack
8       jane      jack
9        ben      jane
10       joe      jane
11      jane      jill
12  beatrice       joe
13       ben …
Run Code Online (Sandbox Code Playgroud)

python string numpy dataframe pandas

8
推荐指数
2
解决办法
565
查看次数

将pandas数据帧合并到2列但以任何顺序排列

问题:

我有2个数据帧的情况:

test1 = pd.DataFrame({'id_A':['Ben', 'Julie', 'Jack', 'Jack'],
                  'id_B':['Julie', 'Ben', 'Nina', 'Julie']})

test2 = pd.DataFrame({'id_a':['Ben', 'Ben', 'Ben', 'Julie', 'Julie', 'Nina'],
                      'id_b':['Julie', 'Nina', 'Jack', 'Nina', 'Jack', 'Jack'],
                      'value':[1,1,0,0,1,0]})

>>> test1
    id_A   id_B
0    Ben  Julie
1  Julie    Ben
2   Jack   Nina
3   Jack  Julie

>>> test2
    id_a   id_b  value
0    Ben  Julie      1
1    Ben   Nina      1
2    Ben   Jack      0
3  Julie   Nina      0
4  Julie   Jack      1
5   Nina   Jack      0
Run Code Online (Sandbox Code Playgroud)

我想要做的是合并test2test1地方id_A == id_a …

python merge dataframe pandas

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

有效地找到2个数据帧的日期时间范围的重叠

关于在日期或时间范围内找到重叠有一些问题(例如).我用这些来解决我的问题,但我最终得到了一个非常缓慢(而且不是很优雅)的解决方案来解决我的问题.如果有人知道如何更快(更优雅),我会非常感激:

问题:

我有2个dataframes,df1并且df2,每2列代表的开始时间和结束时间:

>>> df1

        datetime_start        datetime_end
0  2016-09-11 06:00:00 2016-09-11 06:30:00
1  2016-09-11 07:00:00 2016-09-11 07:30:00
2  2016-09-11 07:30:00 2016-09-11 08:00:00
3  2016-09-11 08:00:00 2016-09-11 08:30:00
4  2016-09-11 08:30:00 2016-09-11 09:00:00
5  2016-09-11 09:00:00 2016-09-11 09:30:00
6  2016-09-11 09:30:00 2016-09-11 10:00:00
7  2016-09-11 10:30:00 2016-09-11 11:00:00
13 2016-09-11 14:00:00 2016-09-11 14:30:00
14 2016-09-11 14:30:00 2016-09-11 15:00:00
15 2016-09-11 15:00:00 2016-09-11 15:30:00
16 2016-09-11 15:30:00 2016-09-11 16:00:00
17 2016-09-11 16:00:00 …
Run Code Online (Sandbox Code Playgroud)

python datetime date-range pandas

6
推荐指数
1
解决办法
1351
查看次数

如何将numpy矩阵添加为pandas数据帧的新列?

我有一个 NxM数据帧和一个NxLnumpy矩阵.我想通过简单地按照它们出现的顺序附加列和行来将矩阵添加到数据框以创建L个新列.我试过merge()join(),但我最终错误:

assign() keywords must be strings

columns overlap but no suffix specified

分别.

有没有办法可以将numpy矩阵添加为数据帧列?

python numpy dataframe pandas

6
推荐指数
2
解决办法
7093
查看次数

如何按行位置过滤 Pandas 数据框?

我有许多带有日期和股票价格的 Pandas 数据框,如下所示:

2017-01-04 00:00:00+00:00    103.24

2017-01-05 00:00:00+00:00    103.89

2017-01-06 00:00:00+00:00    102.42

2017-01-09 00:00:00+00:00    102.60
Run Code Online (Sandbox Code Playgroud)

... 等等。

按行位置过滤这些熊猫的最佳方法是什么?

我正在尝试这样的事情,但没有奏效。

filter_list = [0, 2]

stock_prices.filter(filter_list)
Run Code Online (Sandbox Code Playgroud)

谢谢。

python pandas

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

标签 统计

python ×9

pandas ×8

dataframe ×3

numpy ×2

date-range ×1

datetime ×1

list ×1

merge ×1

r ×1

slice ×1

string ×1