相关疑难解决方法(0)

系列的真值是模棱两可的.使用a.empty,a.bool(),a.item(),a.any()或a.all()

问题是使用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)]
Run Code Online (Sandbox Code Playgroud)

python filtering boolean dataframe pandas

286
推荐指数
6
解决办法
49万
查看次数

Pandas有条件地创建一个系列/数据帧列

我有一个沿着下面的数据框:

    Type       Set
1    A          Z
2    B          Z           
3    B          X
4    C          Y
Run Code Online (Sandbox Code Playgroud)

我想在数据帧中添加另一列(或生成一系列)与数据帧相同的长度(=相等的记录/行数),如果Set ='Z'则设置颜色为绿色,如果Set =否则设置为'red' .

最好的方法是什么?

python numpy dataframe pandas

260
推荐指数
7
解决办法
33万
查看次数

如何获得pandas系列的元素逻辑NOT?

我有一个Series包含布尔值的pandas 对象.如何获得包含NOT每个值的逻辑的系列?

例如,考虑一个系列包含:

True
True
True
False
Run Code Online (Sandbox Code Playgroud)

我想要的系列将包含:

False
False
False
True
Run Code Online (Sandbox Code Playgroud)

这似乎应该相当简单,但显然我错了我的mojo =(

python boolean-logic pandas

197
推荐指数
4
解决办法
10万
查看次数

python pandas删除重复的列

从数据框中删除重复列的最简单方法是什么?

我正在通过以下方式阅读具有重复列的文本文件:

import pandas as pd

df=pd.read_table(fname)
Run Code Online (Sandbox Code Playgroud)

列名是:

Time, Time Relative, N2, Time, Time Relative, H2, etc...
Run Code Online (Sandbox Code Playgroud)

所有时间和时间相对列包含相同的数据.我想要:

Time, Time Relative, N2, H2
Run Code Online (Sandbox Code Playgroud)

我所有的删除,删除等尝试,例如:

df=df.T.drop_duplicates().T
Run Code Online (Sandbox Code Playgroud)

导致唯一值索引错误:

Reindexing only valid with uniquely valued index objects
Run Code Online (Sandbox Code Playgroud)

很抱歉是熊猫菜鸟.任何建议,将不胜感激.


额外细节

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 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

如何按多列过滤pandas数据帧

要按单列过滤数据框(df),如果我们考虑男性和女性的数据,我们可能会:

males = df[df[Gender]=='Male']
Run Code Online (Sandbox Code Playgroud)

问题1 - 但如果数据跨越多年并且我只想看2014年的男性怎么办?

在其他语言中,我可能会这样做:

if A = "Male" and if B = "2014" then 
Run Code Online (Sandbox Code Playgroud)

(除了我想这样做并在新的dataframe对象中获取原始数据帧的子集)

问题2.如何在循环中执行此操作,并为每个独特的年份和性别集创建数据框对象(即:2013年男性,2013年女性,2014年男性和2014年女性的df

for y in year:

for g in gender:

df = .....
Run Code Online (Sandbox Code Playgroud)

python filter pandas

80
推荐指数
6
解决办法
11万
查看次数

Pandas中的元素逻辑OR

我想要元素方面的逻辑OR运算符.我知道"或"本身并不是我想要的.

我知道AND对应于&和不对~.但是OR怎么样?

python boolean-logic logical-operators boolean-operations pandas

71
推荐指数
2
解决办法
7万
查看次数

如何在numpy数组上执行元素明智的布尔运算

例如,我想创建一个掩盖值为40到60之间的元素的掩码:

foo = np.asanyarray(range(100))
mask = (foo < 40).__or__(foo > 60)
Run Code Online (Sandbox Code Playgroud)

哪个看起来很难看,我写不出来:

(foo < 40) or (foo > 60)
Run Code Online (Sandbox Code Playgroud)

因为我最终得到:

  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()
Run Code Online (Sandbox Code Playgroud)

是否有规范的方法在具有良好外观的代码的numpy数组上进行元素明智的布尔运算?

python numpy boolean-operations

47
推荐指数
4
解决办法
6万
查看次数

布尔索引具有多个条件

我有一个Pandas DF,我需要过滤掉一些包含值== 0的行,用于特征'a'和特征'b'.

为了检查值,我运行以下命令:

DF1 = DF[DF['a'] == 0]
Run Code Online (Sandbox Code Playgroud)

返回正确的值.同样,通过这样做:

DF2 = DF[DF['b'] == 0]
Run Code Online (Sandbox Code Playgroud)

我可以看到特征'b'的0值.

但是,如果我尝试使用OR操作数在单行代码中组合这些2:

DF3 = DF[DF['a'] == 0 |  DF['b'] == 0]
Run Code Online (Sandbox Code Playgroud)

我明白了:

TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool]
Run Code Online (Sandbox Code Playgroud)

这里发生了什么事?

python pandas

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

使用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:为什么在布尔索引后选择列需要双括号

对于如下的df表,

   A B C D
0  0 1 1 1
1  2 3 5 7
3  3 1 2 8
Run Code Online (Sandbox Code Playgroud)

为什么在布尔索引后选择特定列需要双括号?

the [['A','C']] part of

df[df['A'] < 3][['A','C']]
Run Code Online (Sandbox Code Playgroud)

python indexing boolean pandas

27
推荐指数
3
解决办法
2万
查看次数