小编wor*_*ins的帖子

将包含字符串的Pandas系列转换为布尔值

我有一个名为数据帧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)

所以我可以轻松添加其他字符串,可以被视为TrueFalse.

python boolean type-conversion series pandas

24
推荐指数
4
解决办法
3万
查看次数

sort_values和sort_index之间的区别

Python Pandas提供了两种排序DataFrame的方法:

这两种方法有什么区别?

python pandas

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

Cumsum在NaN重置

如果我有一个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)

python numpy pandas cumsum

16
推荐指数
4
解决办法
5638
查看次数

如何将Wikipedia wikitable转换为Python Pandas DataFrame?

在维基百科中,您可以找到一些有趣的数据进行排序,过滤,...

这是一个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 wiki parsing wikipedia pandas

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

使用Python和Pandas实现经典鞅

我想在投注系统中使用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功能不是一个好主意

python numpy pandas

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

在Python中使用工程符号(带有SI前缀)将浮点数转换为字符串

我有一个浮点数,如 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

python string numbers

4
推荐指数
3
解决办法
5095
查看次数

使用Python / Pandas仅插值TimeSerie的一个值

我有一个这样的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

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

使用Python/Pandas/Numpy的几何级数(没有循环和使用重复)

我想用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 math numpy pandas

4
推荐指数
3
解决办法
3647
查看次数

自动重命名列以确保它们是唯一的

我将电子表格提取到名为的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']

我正在寻找可用于多个列的解决方案!

python pandas

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

使用包含列表的列(使用列表填充新行)从现有DataFrame构建新的DataFrame

我有一个像这样的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)

python pandas

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

将包含python列表的字符串转换为列表的安全方法

使用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)

python security string parsing list

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