pd.get_dummies
允许将分类变量转换为虚拟变量.除了重建分类变量是微不足道的事实之外,还有一种首选/快速的方法吗?
假设我在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)
我刚刚发现了assign
pandas数据帧的方法,它看起来很漂亮,与mutate
R中的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
吗?
多年来,这一直困扰着我:
给定一个简单的熊猫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) 我有一个清单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)
这有可能吗?
我有一个问题是类似对这个问题,只是不同的不够,它不能用相同的解决方案来解决?
我有两个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) 我有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)
我想要做的是合并test2
与test1
地方id_A == id_a …
关于在日期或时间范围内找到重叠有一些问题(例如).我用这些来解决我的问题,但我最终得到了一个非常缓慢(而且不是很优雅)的解决方案来解决我的问题.如果有人知道如何更快(更优雅),我会非常感激:
问题:
我有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) 我有一个 NxM
数据帧和一个NxL
numpy矩阵.我想通过简单地按照它们出现的顺序附加列和行来将矩阵添加到数据框以创建L个新列.我试过merge()
和join()
,但我最终错误:
assign() keywords must be strings
和
columns overlap but no suffix specified
分别.
有没有办法可以将numpy矩阵添加为数据帧列?
我有许多带有日期和股票价格的 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)
谢谢。