小编use*_*423的帖子

是否有更好的可读方式来在pandas中coalese列

我经常需要一个新列,这是我可以从其他列中获得的最佳列,并且我有一个特定的首选项优先级列表.我愿意采取第一个非null值.

def coalesce(values):
    not_none = (el for el in values if el is not None)
    return next(not_none, None)

df = pd.DataFrame([{'third':'B','first':'A','second':'C'},
                   {'third':'B','first':None,'second':'C'},
                   {'third':'B','first':None,'second':None},                   
                   {'third':None,'first':None,'second':None},
                   {'third':'B','first':'A','second':None}])

df['combo1'] = df.apply(coalesce, axis=1)
df['combo2'] = df[['second','third','first']].apply(coalesce, axis=1)
print df
Run Code Online (Sandbox Code Playgroud)

结果

  first second third combo1 combo2
0     A      C     B      A      C
1  None      C     B      C      C
2  None   None     B      B      B
3  None   None  None   None   None
4     A   None     B      A      B
Run Code Online (Sandbox Code Playgroud)

这段代码有效(结果是我想要的),但速度不是很快.
如果我需要[['second','third','first']],我可以选择我的优先事项

Coalesce有点像tsql中同名的函数.
我怀疑我可能忽略了一种简单的方法来实现它,在大型DataFrame上具有良好的性能(+400,000行)

我知道有很多方法可以填补我经常在轴上使用的缺失数据= 0这就是让我觉得我可能错过了一个简单的选项,因为它= 1

你能建议一些更好/更快的东西......或者确认这是好的.

python pandas

10
推荐指数
2
解决办法
4305
查看次数

让 Pygments 为我的细胞结果工作

我使用 Jupyter Notebooks 来实施和记录适用于我们的生产数据库的更改。我使用 Python 进行编程,并向服务器提交典型的 SQL 语句以获取结果并进行更改。

我喜欢将 sql 打印为单元输出的一部分,以获取更改的详细日志。我希望 pygments 帮助对输出进行着色,以便 SQL 看起来尽可能漂亮。

似乎 pygments 使用 css,我不知道如何将其包含在内


    from pygments import highlight
    from pygments.lexers import SqlLexer
    from pygments.formatters import HtmlFormatter
    from IPython.display import display, HTML
    
    sql_string = '''
    SELECT id, name
      FROM users
     WHERE name between 'B' AND 'P'
    LIMIT 50
    '''

    display(HTML(data=highlight(sql_string, SqlLexer(), HtmlFormatter())))
    display(highlight(sql_string, SqlLexer(), HtmlFormatter()))

    display(HtmlFormatter().get_style_defs('.highlight'))

Run Code Online (Sandbox Code Playgroud)

输出

SELECT id, name
  FROM users
 WHERE name between 'B' AND 'P'
LIMIT 50
u'<div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">id</span><span class="p">,</span> …
Run Code Online (Sandbox Code Playgroud)

pygments jupyter-notebook

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

boto3 Dynamodb表批处理插入缺少的内容

我希望这样的事情能奏效。我正在使用boto3接口将26个项目添加到dynamo数据库中。

但是我丢失了一些东西,因为代码AttributeError: 'str' object has no attribute 'batch_write_item' 直接在第25个插入处报告 (应该自动清除了缓冲区)

from boto3.dynamodb import table
items = [
{'key': 1, u'timestamp': '1493269200000'},
{'key': 2, u'timestamp': '1493269200000'},
{'key': 3, u'timestamp': '1493269200000'},
{'key': 4, u'timestamp': '1493269200000'},
{'key': 5, u'timestamp': '1493269200000'},
{'key': 6, u'timestamp': '1493269200000'},
{'key': 7, u'timestamp': '1493269200000'},
{'key': 8, u'timestamp': '1493269200000'},
{'key': 9, u'timestamp': '1493269200000'},
{'key': 10, u'timestamp': '1493269200000'},
{'key': 11, u'timestamp': '1493269200000'},
{'key': 12, u'timestamp': '1493269200000'},
{'key': 13, u'timestamp': '1493269200000'},
{'key': 14, u'timestamp': '1493269200000'},
{'key': 15, u'timestamp': '1493269200000'},
{'key': 16, …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services amazon-dynamodb boto3

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