问题是使用or条件过滤我的结果数据帧.我希望我的结果df提取var高于0.25且低于-0.25的所有列值.下面的这个逻辑给了我一个模糊的真值,但是当我在两个单独的操作中分割这个过滤时它可以工作.这里发生了什么?不知道在哪里使用建议a.empty(), a.bool(), a.item(),a.any() or a.all().
 result = result[(result['var']>0.25) or (result['var']<-0.25)]
我有一个沿着下面的数据框:
    Type       Set
1    A          Z
2    B          Z           
3    B          X
4    C          Y
我想在数据帧中添加另一列(或生成一系列)与数据帧相同的长度(=相等的记录/行数),如果Set ='Z'则设置颜色为绿色,如果Set =否则设置为'red' .
最好的方法是什么?
我有一个Series包含布尔值的pandas 对象.如何获得包含NOT每个值的逻辑的系列?
例如,考虑一个系列包含:
True
True
True
False
我想要的系列将包含:
False
False
False
True
这似乎应该相当简单,但显然我错了我的mojo =(
从数据框中删除重复列的最简单方法是什么?
我正在通过以下方式阅读具有重复列的文本文件:
import pandas as pd
df=pd.read_table(fname)
列名是:
Time, Time Relative, N2, Time, Time Relative, H2, etc...
所有时间和时间相对列包含相同的数据.我想要:
Time, Time Relative, N2, H2
我所有的删除,删除等尝试,例如:
df=df.T.drop_duplicates().T
导致唯一值索引错误:
Reindexing only valid with uniquely valued index objects
很抱歉是熊猫菜鸟.任何建议,将不胜感激.
额外细节
Pandas版本:0.9.0 
Python版本:2.7.3 
Windows 7 
(通过Pythonxy 2.7.3.0安装)
数据文件(注意:在真实文件中,列由制表符分隔,这里它们用4个空格分隔):
Time    Time Relative [s]    N2[%]    Time    Time Relative [s]    H2[ppm]
2/12/2013 9:20:55 AM    6.177    9.99268e+001    2/12/2013 9:20:55 AM    6.177    3.216293e-005    
2/12/2013 9:21:06 AM    17.689    9.99296e+001    2/12/2013 9:21:06 AM    17.689    3.841667e-005    
2/12/2013 9:21:18 AM    29.186    9.992954e+001    2/12/2013 9:21:18 …要按单列过滤数据框(df),如果我们考虑男性和女性的数据,我们可能会:
males = df[df[Gender]=='Male']
问题1 - 但如果数据跨越多年并且我只想看2014年的男性怎么办?
在其他语言中,我可能会这样做:
if A = "Male" and if B = "2014" then 
(除了我想这样做并在新的dataframe对象中获取原始数据帧的子集)
问题2.如何在循环中执行此操作,并为每个独特的年份和性别集创建数据框对象(即:2013年男性,2013年女性,2014年男性和2014年女性的df
for y in year:
for g in gender:
df = .....
我想要元素方面的逻辑OR运算符.我知道"或"本身并不是我想要的.
我知道AND对应于&和不对~.但是OR怎么样?
python boolean-logic logical-operators boolean-operations pandas
例如,我想创建一个掩盖值为40到60之间的元素的掩码:
foo = np.asanyarray(range(100))
mask = (foo < 40).__or__(foo > 60)
哪个看起来很难看,我写不出来:
(foo < 40) or (foo > 60)
因为我最终得到:
  ValueError Traceback (most recent call last)
  ...
  ----> 1 (foo < 40) or (foo > 60)
  ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
是否有规范的方法在具有良好外观的代码的numpy数组上进行元素明智的布尔运算?
我有一个Pandas DF,我需要过滤掉一些包含值== 0的行,用于特征'a'和特征'b'.
为了检查值,我运行以下命令:
DF1 = DF[DF['a'] == 0]
返回正确的值.同样,通过这样做:
DF2 = DF[DF['b'] == 0]
我可以看到特征'b'的0值.
但是,如果我尝试使用OR操作数在单行代码中组合这些2:
DF3 = DF[DF['a'] == 0 |  DF['b'] == 0]
我明白了:
TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool]
这里发生了什么事?
pd.eval并且eval是pandas API套件中功能强大但被低估的功能,它们的使用远未完全记录或理解.小心适量,eval并且engine可以极大地简化代码,提高性能,并成为创建动态工作流的强大工具.
这个规范QnA的目的是让用户更好地理解这些功能,讨论一些鲜为人知的功能,如何使用它们,以及如何最好地使用它们,以及清晰易懂的示例.这篇文章将讨论的两个主要议题是
parser,df2并x在争论pd.eval,以及它们如何被用来计算表达式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 …对于如下的df表,
   A B C D
0  0 1 1 1
1  2 3 5 7
3  3 1 2 8
为什么在布尔索引后选择特定列需要双括号?
the [['A','C']] part of
df[df['A'] < 3][['A','C']]