相关疑难解决方法(0)

"u"和"r"字符串标志究竟做了什么,以及什么是原始字符串文字?

在问这个问题时,我意识到我对原始字符串知之甚少.对于那些自称是Django训练师的人来说,这很糟糕.

我知道编码是什么,而且我知道u''自从我得到什么是Unicode以来我们独自做了什么.

  • 但到底r''做了什么呢?它会产生什么样的字符串?

  • And above all, what the heck does ur'' do?

  • Finally, is there any reliable way to go back from a Unicode string to a simple raw string?

  • Ah, and by the way, if your system and your text editor charset are set to UTF-8, does u'' actually do anything?

python unicode python-2.x rawstring

600
推荐指数
7
解决办法
41万
查看次数

如何为Pandas数据帧实现'in'和'not in'

我怎样才能实现SQL的的等价物INNOT IN

我有一个包含所需值的列表.这是场景:

df = pd.DataFrame({'countries':['US','UK','Germany','China']})
countries = ['UK','China']

# pseudo-code:
df[df['countries'] not in countries]
Run Code Online (Sandbox Code Playgroud)

我目前的做法如下:

df = pd.DataFrame({'countries':['US','UK','Germany','China']})
countries = pd.DataFrame({'countries':['UK','China'], 'matched':True})

# IN
df.merge(countries,how='inner',on='countries')

# NOT IN
not_in = df.merge(countries,how='left',on='countries')
not_in = not_in[pd.isnull(not_in['matched'])]
Run Code Online (Sandbox Code Playgroud)

但这似乎是一个可怕的kludge.任何人都可以改进吗?

python sql-function dataframe pandas

353
推荐指数
9
解决办法
34万
查看次数

如何从Pandas数据帧中过滤包含字符串模式的行

假设我们在Python Pandas中有一个数据框,如下所示:

df = pd.DataFrame({'vals': [1, 2, 3, 4], 'ids': [u'aball', u'bball', u'cnut', u'fball']})
Run Code Online (Sandbox Code Playgroud)

或者,以表格形式:

ids    vals
aball   1
bball   2
cnut    3
fball   4
Run Code Online (Sandbox Code Playgroud)

如何过滤包含关键词"ball?"的行?例如,输出应为:

ids    vals
aball   1
bball   2
fball   4
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

108
推荐指数
4
解决办法
21万
查看次数

在pandas中搜索数据框中的"不包含"

我已经做了一些搜索,无法弄清楚如何过滤数据帧df["col"].str.contains(word),但是我想知道是否有办法做反向:按照该集合的赞美过滤数据帧.例如:对...的影响!(df["col"].str.contains(word)).

这可以通过一种DataFrame方法完成吗?

python contains pandas

99
推荐指数
6
解决办法
9万
查看次数

如何测试一个字符串是否包含列表中的一个子字符串?

是否有任何功能相当于df.isin()df[col].str.contains()?的组合?

例如,假设我有这个系列 s = pd.Series(['cat','hat','dog','fog','pet']),并且我想找到s包含任何内容的所有地方['og', 'at'],我想要获得除了宠物之外的一切.

我有一个解决方案,但它相当不优雅:

searchfor = ['og', 'at']
found = [s.str.contains(x) for x in searchfor]
result = pd.DataFrame[found]
result.any()
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

python string match dataframe pandas

90
推荐指数
3
解决办法
8万
查看次数

对于有熊猫的循环 - 我什么时候应该关心?

我熟悉"矢量化"的概念,以及熊猫如何使用矢量化技术来加速计算.矢量化函数在整个系列或DataFrame上广播操作,以实现比传统迭代数据更大的加速.

但是,我很惊讶地看到很多代码(包括Stack Overflow的答案)提供了解决问题的方法,这些问题涉及使用for循环和列表推导来循环数据.阅读完文档后,对API有了不错的理解,我认为循环是"坏的",并且应该"永远"迭代数组,系列或DataFrame.那么,为什么我会不时地看到用户提出循环解决方案呢?

因此,要总结......我的问题是:
是否for循环真正的"坏"?如果不是,在什么情况下它们会比使用更传统的"矢量化"方法更好?1

1 - 虽然这个问题确实听起来有点宽泛,但事实是,当for循环通常比传统的迭代数据更好时,存在非常具体的情况.这篇文章旨在为后人捕捉这一点.

python iteration list-comprehension vectorization pandas

85
推荐指数
2
解决办法
7819
查看次数

我什么时候应该在我的代码中使用pandas apply()?

这是一个自我回答的QnA,旨在指导用户应用的缺陷和好处.

我已经看到很多关于Stack Overflow问题的答案涉及使用apply.我也看到用户评论他们说" apply很慢",应该避免".

我已经阅读了很多关于性能主题的文章,解释apply很慢.我还在文档中看到了一个关于如何apply简单地传递UDF的便利函数的免责声明(现在似乎无法找到).因此,普遍的共识是,apply如果可能,应该避免.但是,这引发了以下问题:

  1. 如果apply是如此糟糕,那为什么它在API中呢?
  2. 我应该如何以及何时制作我的代码apply- 免费?
  3. 是否有过任何地方的情况apply不错的(比其他可能的解决方案更好)?

python performance apply pandas

68
推荐指数
3
解决办法
8380
查看次数

使用pd.eval()在pandas中进行动态表达式评估

目标和动机

pd.eval并且eval是pandas API套件中功能强大但被低估的功能,它们的使用远未完全记录或理解.小心适量,eval并且engine可以极大地简化代码,提高性能,并成为创建动态工作流的强大工具.

这个规范QnA的目的是让用户更好地理解这些功能,讨论一些鲜为人知的功能,如何使用它们,以及如何最好地使用它们,以及清晰易懂的示例.这篇文章将讨论的两个主要议题是

  1. 了解parser,df2x在争论pd.eval,以及它们如何被用来计算表达式
  2. 了解之间的差eval,eval并且engine,当每个功能是合适的用于动态执行.

这篇文章不能替代文档(答案中的链接),所以请完成它!


我将以这样的方式构建一个问题,以便开启对所支持的各种功能的讨论parser.

给出两个DataFrame

np.random.seed(0)
df1 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))
df2 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))

df1
   A  B  C  D
0  5  0  3  3
1  7  9  3  5
2  2  4  7  6
3  8  8  1  6
4  7  7  8  1

df2
   A  B  C …
Run Code Online (Sandbox Code Playgroud)

python eval dataframe pandas

45
推荐指数
2
解决办法
7156
查看次数

在pandas中使用带有数据帧的str.contains()

我想知道是否有更有效的方法在Pandas中使用str.contains()函数,一次搜索两个部分字符串.我想在数据框中搜索包含"nt"或"nv"的数据的给定列.现在,我的代码看起来像这样:

    df[df['Behavior'].str.contains("nt", na=False)]
    df[df['Behavior'].str.contains("nv", na=False)]
Run Code Online (Sandbox Code Playgroud)

然后我将一个结果追加到另一个.我想做的是使用一行代码来搜索包含"nt"或"nv"或"nf"的任何数据.我已经玩了一些我认为应该工作的方法,包括在术语之间插入管道,但所有这些都会导致错误.我已经检查了文档,但我不认为这是一个选项.我得到这样的错误:

    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-113-1d11e906812c> in <module>()
    3 
    4 
    ----> 5 soctol = f_recs[f_recs['Behavior'].str.contains("nt"|"nv", na=False)]
    6 soctol

    TypeError: unsupported operand type(s) for |: 'str' and 'str'
Run Code Online (Sandbox Code Playgroud)

有没有快速的方法来做到这一点?感谢您的帮助,我是初学者,但我喜欢数据争夺的熊猫.

python string performance dataframe pandas

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

在pandas数据帧上使用str.contains

这个pandas python代码生成错误消息,

"TypeError:一元〜:'浮动'的坏操作数类型"

我不知道为什么因为我试图操纵一个str对象

df_Anomalous_Vendor_Reasons[~df_Anomalous_Vendor_Reasons['V'].str.contains("File*|registry*")] #sorts, leaving only cases where reason is NOT File or Registry
Run Code Online (Sandbox Code Playgroud)

有人有任何想法吗?

python arrays string excel pandas

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