小编Ami*_*mir的帖子

Plotly:如何仅将垂直和水平线(十字准线)显示为 hoverinfo?

我想在 plotly dash 中绘制一个带有两个子图的图表。我的整个图表如下所示:

import pandas as pd
import numpy as np
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
from plotly.subplots import make_subplots
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv').iloc[:60]
fig = make_subplots(rows=2, cols=1, row_heights=[0.8, 0.2], vertical_spacing=0)

fig.add_trace(go.Candlestick(open=df['AAPL.Open'], high=df['AAPL.High'], low=df['AAPL.Low'], close=df['AAPL.Close'],
                             increasing_line_color='#0384fc', decreasing_line_color='#e8482c', name='AAPL'), row=1, col=1)

fig.add_trace(go.Scatter(y=np.random.randint(20, 40, len(df)), marker_color='#fae823', name='VO', hovertemplate=[]), row=2, col=1)

fig.update_layout({'plot_bgcolor': "#21201f", 'paper_bgcolor': "#21201f", 'legend_orientation': "h"},
                  legend=dict(y=1, x=0),
                  font=dict(color='#dedddc'), dragmode='pan', hovermode='x unified',
                  margin=dict(b=20, t=0, l=0, r=40))

fig.update_xaxes(showgrid=False, zeroline=False, rangeslider_visible=False, showticklabels=False,
                 showspikes=True, spikemode='across', spikesnap='data', …
Run Code Online (Sandbox Code Playgroud)

python plotly plotly-dash

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

查找满足掩码条件的最后一行

这是我的数据框:

df = pd.DataFrame({'a': [20, 21, 333, 444], 'b': [20, 20, 20, 20]})
Run Code Online (Sandbox Code Playgroud)

c我想使用这个掩码创建列:

mask = (df.a >= df.b)
Run Code Online (Sandbox Code Playgroud)

我想获取满足此条件的最后一行并创建列c。我想要的输出如下所示:

     a   b    c
0   20  20  NaN
1   21  20  NaN
2  333  20  NaN
3  444  20  x
Run Code Online (Sandbox Code Playgroud)

我尝试了下面的代码,但它不起作用:

df.loc[mask.cumsum().gt(1) & mask, 'c'] = 'x'
Run Code Online (Sandbox Code Playgroud)

python indexing duplicates pandas

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

找到满足掩码条件的第一行并选择其后的一行

这是我的数据框:

import pandas as pd 
df = pd.DataFrame(
    {
        'a': [100, 1123, 123, 100, 1, 0, 1],
        'b': [1000, 11123, 1123, 0, 55, 0, 1],
        'c': ['a', 'b', 'c', 'd', 'e', 'f', 'g'],
    }
)
Run Code Online (Sandbox Code Playgroud)

这就是我想要的输出。我想创建专栏x

     a      b  c    x
0   100   1000  a  NaN
1  1123  11123  b  NaN
2   123   1123  c  NaN
3   100      0  d  NaN
4     1     55  e  e
5     0      0  f  NaN
6     1      1  g  NaN
Run Code Online (Sandbox Code Playgroud)

通过使用面罩:

mask = …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

在pandas groupby中查找满足条件的组

这是我的数据框:

df = pd.DataFrame({'a':list('xxxyyzz'), 'b':[10,20,30,5,3,1,2]})
Run Code Online (Sandbox Code Playgroud)

我将它们分组:

groups = df.groupby('a')
Run Code Online (Sandbox Code Playgroud)

我想打印至少有b20个以上的组。在这种情况下,我想打印x. 这是我想要的结果:

x
   a   b
0  x  10
1  x  20
2  x  30
Run Code Online (Sandbox Code Playgroud)

python pandas pandas-groupby

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

python中发生异常错误时播放声音

我想使用 python 从另一个网站获取一些数据requests。但有时服务器无法正确回复。

我在我的代码中使用了tryandexcept并且想在 except 块中播放声音。

我已经尝试了以下方法:

import winsound

try:
    #do something
except:
    winsound.Beep(400,400)
Run Code Online (Sandbox Code Playgroud)

这段代码在我执行时不起作用。它只是引发了异常。

python

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

基于 Pandas 数据框中其他列的值范围的列总和

这是我的数据框:

df = pd.DataFrame({'sym': ['a', 'b'], 'vol_1': [100, 50], 'price_1': [5, 150], 'vol_2': [1500, 2000], 'price_2': [20, 175],
                   'vol_3': [123, 500], 'price_3': [22, 1000], 'min': [18, 150], 'max': [23, 176]})
Run Code Online (Sandbox Code Playgroud)

我想增加一列,资金vol_1vol_2以及vol_3为每一行,如果这是在每个卷下一列价格在范围minmaxCOLS。例如对于我想要的第一行vol_2vol_3因为价格在min和 的范围内max。我想要的结果是这样的:

 sym  vol_1  price_1  vol_2  price_2  vol_3  price_3  min  max  vol_sum
0   a    100        5   1500       20    123       22   18   23     1623
1   b     50      150   2000      175    500     1000  150 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

从 Pandas 中的某些列名中删除后缀

这是我的 df:

df = pd.DataFrame({'a_x':[1, 2, 3], 'b_x':[20, 30, 40], 'c_x':[10, 40, 50]})
Run Code Online (Sandbox Code Playgroud)

如何删除第一列和第三列名称的后缀?

我不想要这种方法: df = df.rename(columns={'a_x':'a', 'c_x':'c'})将它们一一硬编码。

编辑 1:我有要从中删除后缀的列的列表。在这种情况下,我有['a', 'c']

我想要的结果是这样的:

    a    b_x   c
0    1   20   10
1    2   30   40
2    3   40   50
Run Code Online (Sandbox Code Playgroud)

python pandas

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

使用to_excel时如何为正数添加加号?

这是我的数据框。

import pandas as pd 
import numpy as np
df = pd.DataFrame(
    {
        'a': [2, 2, 2, -4, np.nan, np.nan, 4, -3, 2, -2, -6],
        'b': [2, 2, 2, 4, 4, 4, 4, 3, 2, 2, 6]
    }
)
Run Code Online (Sandbox Code Playgroud)

a我想在导出到 Excel 时仅为列添加正数加号。例如1变成+1。请注意,我NaN也有价值观。我希望它们是 Excel 中的空单元格,类似于 Pandas 在处理NaN中的值时的默认行为to_excel.

我尝试了很多解决方案。这是其中之一。但在 Excel 中却不起作用。

df.style.format({'a': '{:+g}'}).to_excel(r'df.xlsx', sheet_name='xx', index=False)
Run Code Online (Sandbox Code Playgroud)

python pandas

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