小编Woj*_*zak的帖子

pandas:索引数据框时的多个条件 - 意外行为

我通过两列中的值过滤数据框中的行.

由于某种原因,OR运算符的行为与我期望AND运算符的行为相反,反之亦然.

我的测试代码:

import pandas as pd

df = pd.DataFrame({'a': range(5), 'b': range(5) })

# let's insert some -1 values
df['a'][1] = -1
df['b'][1] = -1
df['a'][3] = -1
df['b'][4] = -1

df1 = df[(df.a != -1) & (df.b != -1)]
df2 = df[(df.a != -1) | (df.b != -1)]

print pd.concat([df, df1, df2], axis=1,
                keys = [ 'original df', 'using AND (&)', 'using OR (|)',])
Run Code Online (Sandbox Code Playgroud)

结果如下:

      original df      using AND (&)      using OR (|)    
             a  b              a   b             a …
Run Code Online (Sandbox Code Playgroud)

python boolean-logic pandas

100
推荐指数
3
解决办法
20万
查看次数

迭代异构容器

我正在使用类似于这个的异构容器.我可以轻松地从容器中放置和接收对象:

Favorites f = new Favorites();
f.putFavorite(String.class, "Java");
String someString = f.getFavorite(String.class);
Run Code Online (Sandbox Code Playgroud)

但似乎没有简单的方法来迭代这样的容器.我可以keySet()Favorites类中添加一个方法,只需返回内部Map对象的键集:

public Set<Class<?>> keySet() {
  return favorites.keySet();
}
Run Code Online (Sandbox Code Playgroud)

现在,我想遍历键,使用键来获取关联的值,并在接收的对象上调用一些方法:

for (Class<?> klass : f.keySet()) {
   // f.getFavorite(klass).<SOME_METHOD_SPECIFIC_TO_THE_CLASS-KEY>
}
Run Code Online (Sandbox Code Playgroud)

我以为我可以通过调用来访问容器中保存的对象的方法klass.cast(f.getFavorite(klass)).SOME_METHOD(),但它也不起作用(意思是,我不能访问任何方法,除了Object相关的方法).

让我们说,在我的用例中,我想检查我迭代的所有这些对象的接口,并相应地对检测到的接口采取行动.我们还假设我可能有几十个不同类的对象,并且它们都实现了三个接口之一.

我能想到的唯一解决方案是用几十个isinstance检查填充我的代码,但我更喜欢一种不那么麻烦的方法(即检查给定对象是否实现了三个接口之一).

java generics

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

matplotlib:当绘制许多子图时,图中出现空白区域

我正在使用matplotlib绘制几十个子图.在图的底部,在最后一行图和图例之间,出现一个空白区域.当我添加更多的子图时,空白区域会变大.知道如何摆脱这个空旷的空间吗?

这是工作代码:

import textwrap
import matplotlib.pyplot as plt
from collections import OrderedDict

rlen = 31 # number of plots
figsize = (11, 3) # matrix of subplots
fig = plt.figure(figsize=(figsize[1]*4, figsize[0]*4))

plots = []
for f_ind in range(rlen):
   plots.append(fig.add_subplot(figsize[0], figsize[1], f_ind))

fig.subplots_adjust(wspace=0.5, hspace=0.5)

for ax in plots:
   atitle = 'Aaa bbb ccc ' * 10
   ax.set_title('\n'.join(textwrap.wrap(atitle, 45)), fontsize=10)
   ax.plot(range(10), range(10), 'o', color='red', label='LABEL_1')
   revlist = list(reversed(range(10)))
   ax.plot(revlist, range(10), 'o', color='blue', label='LABEL_2')
   ax.set_xlabel('Train set size', fontsize=9)
   ax.set_ylabel('Accuracy (%)', fontsize=9)

handles, labels …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

标签 统计

python ×2

boolean-logic ×1

generics ×1

java ×1

matplotlib ×1

pandas ×1