我有一个名为数据帧df
作为
Order Number Status
1 1668 Undelivered
2 19771 Undelivered
3 100032108 Undelivered
4 2229 Delivered
5 00056 Undelivered
Run Code Online (Sandbox Code Playgroud)
我想将Status
列转换为布尔值(True
当状态已交付且False
状态为未交付时),但如果状态既不是'未交付'也不是'已交付',则应将其视为类似NotANumber
或类似的内容.
我想用dict
d = {
'Delivered': True,
'Undelivered': False
}
Run Code Online (Sandbox Code Playgroud)
所以我可以轻松添加其他字符串,可以被视为True
或False
.
如果我有一个1或NaN的pandas.core.series.Series
命名ts
如下:
3382 NaN
3381 NaN
...
3369 NaN
3368 NaN
...
15 1
10 NaN
11 1
12 1
13 1
9 NaN
8 NaN
7 NaN
6 NaN
3 NaN
4 1
5 1
2 NaN
1 NaN
0 NaN
Run Code Online (Sandbox Code Playgroud)
我想计算这个系列的cumsum但它应该在NaN的位置重置(设置为零),如下所示:
3382 0
3381 0
...
3369 0
3368 0
...
15 1
10 0
11 1
12 2
13 3
9 0
8 0
7 0
6 0
3 0
4 1
5 2 …
Run Code Online (Sandbox Code Playgroud) 在维基百科中,您可以找到一些有趣的数据进行排序,过滤,...
这是一个wikitable的样本
{| class="wikitable sortable"
|-
! Model !! Mhash/s !! Mhash/J !! Watts !! Clock !! SP !! Comment
|-
| ION || 1.8 || 0.067 || 27 || || 16 || poclbm; power consumption incl. CPU
|-
| 8200 mGPU || 1.2 || || || 1200 || 16 || 128 MB shared memory, "poclbm -w 128 -f 0"
|-
| 8400 GS || 2.3 || || || || || "poclbm -w 128"
|-
|}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法将这些数据导入Python Pandas DataFrame
我想在投注系统中使用Python和Pandas实现经典的鞅.
假设这个DataFrame是这样定义的
df = pd.DataFrame(np.random.randint(0,2,100)*2-1, columns=['TossResults'])
Run Code Online (Sandbox Code Playgroud)
所以它包含折腾结果(-1 =输1 =赢)
我想使用经典鞅更改赌注(我打赌每次赌注的金额).
初始股权为1.
如果我输了赌注将是之前赌注的2倍(乘数= 2).
如果我赢得股权将是stake_initial
我做了一个功能
def stake_martingale_classical(stake_previous, result_previous, multiplier, stake_initial):
if (result_previous==-1): # lose
stake = stake_previous*multiplier
elif (result_previous==1):
stake = stake_initial
else:
raise(Exception('Error result_previous must be equal to 1 (win) or -1 (lose)'))
return(stake)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使用Pandas有效地实现它.我试过这个:
initial_stake = 1
df['Stake'] = None
df['Stake'][0] = initial_stake
df['TossResultsPrevious'] = self.df['TossResults'].shift(1) # shifting-lagging
df['StakePrevious'] = self.df['Stake'].shift(1) # shifting-lagging
Run Code Online (Sandbox Code Playgroud)
但是现在,我需要沿着0轴应用这个(多参数)函数.
我不知道该怎么办!
我曾经看过pandas.DataFrame.applymap
功能,但它似乎只是一个参数功能.
也许我错了,使用shift
功能不是一个好主意
我有一个浮点数,如 x=23392342.1
我想将它转换为带有工程符号的字符串(带有公制前缀)
http://en.wikipedia.org/wiki/Engineering_notation http://en.wikipedia.org/wiki/Metric_prefix
所以在我的例子中23392342.1 = 23.3923421E6 = 23.3923421 M(兆)
我想展示 23.3923421 M
我有一个这样的pandas.core.series.TimeSeries
名字ts
:
timestamp
2013-08-11 14:23:50 0.3219
2013-08-11 14:23:49 0.3222
2013-08-11 14:19:14 0.3305
2013-08-11 00:47:15 0.3400
2013-08-11 00:47:15.001 0.3310
2013-08-11 00:47:15.002 0.3310
2013-08-10 22:38:15.003 0.3400
2013-08-10 22:38:14 0.3403
2013-08-10 22:38:13 0.3410
Run Code Online (Sandbox Code Playgroud)
该TimeSerie的索引间隔不规则。
我想ts
在给定的日期时间具有的价值,例如2013-08-11 14:20:00
我只需要插值一个值,而不是整个TimeSerie
我只想在上一个索引(2013-08-11 14:23:49
)和下一个索引(2013-08-11 14:19:14
)之间使用线性函数对数据进行插值
我想用Python/Pandas/Numpy实现几何级数.
这是我做的:
N = 10
n0 = 0
n_array = np.arange(n0, n0 + N, 1)
u = pd.Series(index = n_array)
un0 = 1
u[n0] = un0
for n in u.index[1::]:
#u[n] = u[n-1] + 1.2 # arithmetic progression
u[n] = u[n-1] * 1.2 # geometric progression
print(u)
Run Code Online (Sandbox Code Playgroud)
我明白了:
0 1.000000
1 1.200000
2 1.440000
3 1.728000
4 2.073600
5 2.488320
6 2.985984
7 3.583181
8 4.299817
9 5.159780
dtype: float64
Run Code Online (Sandbox Code Playgroud)
我想知道如何避免使用这个for循环.
我看了一下 https://fr.wikipedia.org/wiki/Suite_g%C3%A9om%C3%A9trique ,发现u_n可以表示为:u_n = u_ {n_0}*q ^ {n-n_0}
所以我做到了 …
我将电子表格提取到名为的Python DataFrame中df
.
我们举个例子:
df=pd.DataFrame({'a': np.random.rand(10), 'b': np.random.rand(10)})
df.columns=['a','a']
a a
0 0.973858 0.036459
1 0.835112 0.947461
2 0.520322 0.593110
3 0.480624 0.047711
4 0.643448 0.104433
5 0.961639 0.840359
6 0.848124 0.437380
7 0.579651 0.257770
8 0.919173 0.785614
9 0.505613 0.362737
Run Code Online (Sandbox Code Playgroud)
当我跑步时,df.columns.is_unique
我得到了False
我想自动将列'a'重命名为'a_2'(或类似的东西)
我不指望像这样的解决方案 df.columns=['a','a_2']
我正在寻找可用于多个列的解决方案!
我有一个像这样的DataFrame:
df = pd.DataFrame({'name': ['toto', 'tata', 'tati'], 'choices': 0})
df['choices'] = df['choices'].astype(object)
df['choices'][0] = [1,2,3]
df['choices'][1] = [5,4,3,1]
df['choices'][2] = [6,3,2,1,5,4]
print(df)
choices name
0 [1, 2, 3] toto
1 [5, 4, 3, 1] tata
2 [6, 3, 2, 1, 5, 4] tati
Run Code Online (Sandbox Code Playgroud)
我想基于这样的df构建一个DataFrame
choice rank name
0 1 0 toto
1 2 1 toto
2 3 2 toto
3 5 0 tata
4 4 1 tata
5 3 2 tata
6 1 3 tata
7 6 0 tati
8 …
Run Code Online (Sandbox Code Playgroud) 使用HTTP查询我得到这样的数据(作为字符串)
[[1356912000, 13.391120000000, 13.509900000000, 13.391120000000, 13.509320000000, 41.088424560000, 555.033691727713, 13.508273867187],
[1356912900, 13.509320000000, 13.549990000000, 13.424280000000, 13.424420000000, 65.617187260000, 887.084786010319, 13.519091918636],
... ,
[1359589500, 19.750000000000, 19.783450000000, 19.700000000000, 19.700010000000, 171.512197650000, 3389.270172356359, 19.761102818312],
[1359590400, 19.700010000000, 19.783450000000, 19.700000000000, 19.700010000000, 161.142525670000, 3183.651205816806, 19.756741385179]]
Run Code Online (Sandbox Code Playgroud)
假设我们将数据存储在一个名为的字符串中 s
s = "[[1356912000, 13.391120000000, 13.509900000000, 13.391120000000, 13.509320000000, 41.088424560000, 555.033691727713, 13.508273867187], [1356912900, 13.509320000000, 13.549990000000, 13.424280000000, 13.424420000000, 65.617187260000, 887.084786010319, 13.519091918636], [1359589500, 19.750000000000, 19.783450000000, 19.700000000000, 19.700010000000, 171.512197650000, 3389.270172356359, 19.761102818312], [1359590400, 19.700010000000, 19.783450000000, 19.700000000000, 19.700010000000, 161.142525670000, 3183.651205816806, 19.756741385179]]"
Run Code Online (Sandbox Code Playgroud)
我想获得一个lst
包含数据的列表
我的第一个想法是做
lst = eval(s)
Run Code Online (Sandbox Code Playgroud)
所以我得到:
In …
Run Code Online (Sandbox Code Playgroud)