相关疑难解决方法(0)

python中的含义是什么?

嗨,我遇到了以下代码

numdigits = len(cardNumber)
oddeven = numdigits & 1
Run Code Online (Sandbox Code Playgroud)

到底发生了什么?我不确定"&"是做什么的.

python

26
推荐指数
3
解决办法
4万
查看次数

Pandas使用boolean选择DataFrame列

以下标准给出了布尔真假结果(梳子是一个超过1,000列的数据帧,我选择的列数超过4000.

criteria = comb.ix[:,'c_0327':].count()>4000
Run Code Online (Sandbox Code Playgroud)

我想用它来选择True列到新的Dataframe.
以下只给出了"Unalignable boolean Series key"

comb.loc[criteria,]
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

comb.ix[:, comb.ix[:,'c_0327':].count()>4000] 
Run Code Online (Sandbox Code Playgroud)

类似于这个问题回答数据框布尔选择沿列而不是行, 但这给了我同样的错误:"提供了不可对齐的布尔系列键"

comb.ix[:,'c_0327':].count()>4000
Run Code Online (Sandbox Code Playgroud)

收益率:

c_0327    False
c_0328    False
c_0329    False
c_0330    False
c_0331    False
c_0332    False
c_0333    False
c_0334    False
c_0335    False
c_0336    False
c_0337     True
c_0338    False
.....
Run Code Online (Sandbox Code Playgroud)

python pandas

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

使用boolean时python的〜发生了什么?

在pandas DataFrame中,我有一系列的布尔值。为了过滤到布尔值为True的行,我可以使用:df[df.column_x]

我认为,为了只过滤列为False的行,我可以使用:df[~df.column_x]。我觉得我以前做过,并且已经将其视为接受的答案。

但是,这失败了,因为~df.column_x将值转换为整数。见下文。

import pandas as pd . # version 0.24.2

a = pd.Series(['a', 'a', 'a', 'a', 'b', 'a', 'b', 'b', 'b', 'b'])
b = pd.Series([True, True, True, True, True, False, False, False, False, False], dtype=bool)

c = pd.DataFrame(data=[a, b]).T
c.columns = ['Classification', 'Boolean']```

print(~c.Boolean)

0    -2
1    -2
2    -2
3    -2
4    -2
5    -1
6    -1
7    -1
8    -1
9    -1
Name: Boolean, dtype: object

print(~b)

0    False
1    False …
Run Code Online (Sandbox Code Playgroud)

python boolean pandas

19
推荐指数
1
解决办法
1071
查看次数

如何在pandas dataframe列中选择一系列值?

import pandas as pd
import numpy as np
data = 'filename.csv'
df = pd.DataFrame(data)
df 

        one       two     three  four   five
a  0.469112 -0.282863 -1.509059  bar   True
b  0.932424  1.224234  7.823421  bar  False
c -1.135632  1.212112 -0.173215  bar  False
d  0.232424  2.342112  0.982342  unbar True
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
Run Code Online (Sandbox Code Playgroud)

我想为某列选择一个范围,让我们说列two.我想选择介于-0.5和+0.5之间的所有值.怎么做到这一点?

我期待用

-0.5 < df["two"] < 0.5
Run Code Online (Sandbox Code Playgroud)

但这(自然)给出了一个ValueError:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() …
Run Code Online (Sandbox Code Playgroud)

python range dataframe python-3.x pandas

18
推荐指数
2
解决办法
5万
查看次数

在Panda Dataframe中附加布尔列

我正在学习熊猫,并在这里遇到这个问题.

我创建了一个跟踪所有用户的数据框以及他们执行某些操作的次数.

为了更好地理解我创建此示例的问题:

import pandas as pd
data = [
    {'username': 'me',  'bought_apples': 2, 'bought_pears': 0},
    {'username': 'you', 'bought_apples': 1, 'bought_pears': 1}
]
df = pd.DataFrame(data)
df['bought_something'] = df['bought_apples'] > 0 or df['bought_pears'] > 0
Run Code Online (Sandbox Code Playgroud)

在最后一行中,我想添加一个列,指示用户是否已经购买了一些东西.

弹出此错误:

ValueError:Series的真值是不明确的.使用a.empty,a.bool(),a.item(),a.any()或a.all().

我理解熊猫系列中的歧义点(这里也有解释),但我无法将其与问题联系起来.

有趣的是这有效

df['bought_something'] = df['bought_apples'] > 0
Run Code Online (Sandbox Code Playgroud)

谁能帮我?

python pandas ipython-notebook

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

如何通过disjunction语句(逻辑"或")切片pandas DataFrame?

我想切片pandas.DataFrame满足条件A 条件B的切片.大多数搜索结果仅显示如何使用"和"切片数据帧.所以我想知道是否可以使用"或"运算符而不将(A和B)转换为(不是(不是A而不是B))?因为有时需要许多"或"条件,转换可能会很麻烦.

我试着用:

df[(df['c1']==x1) or (df['c2']==x2)]
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

python dataframe pandas

5
推荐指数
1
解决办法
2650
查看次数

使用和不使用括号的pandas逻辑和运算符会产生不同的结果

我刚刚注意到了这一点:

df[df.condition1 & df.condition2]
df[(df.condition1) & (df.condition2)]
Run Code Online (Sandbox Code Playgroud)

为什么这两行的输出不同?


我无法分享确切的数据,但我会尝试尽可能多地提供详细信息:

df[df.col1 == False & df.col2.isnull()] # returns 33 rows and the rule `df.col2.isnull()` is not in effect
df[(df.col1 == False) & (df.col2.isnull())] # returns 29 rows and both conditions are applied correctly 
Run Code Online (Sandbox Code Playgroud)

感谢@jezrael和@ayhan,这里发生了什么,让我使用@jezael提供的示例:

df = pd.DataFrame({'col1':[True, False, False, False],
                   'col2':[4, np.nan, np.nan, 1]})

print (df)
    col1  col2
0   True   4.0
1  False   NaN
2  False   NaN
3  False   1.0
Run Code Online (Sandbox Code Playgroud)

如果我们看看第3行:

    col1  col2
3  False   1.0
Run Code Online (Sandbox Code Playgroud)

以及我写条件的方式:

df.col1 == False & df.col2.isnull() …
Run Code Online (Sandbox Code Playgroud)

python pandas

5
推荐指数
1
解决办法
1338
查看次数

根据条件创建布尔列

我有一个包含 11 列的数据框,我想根据其中两列中的值创建一个新的 0,1 列。

我已经尝试使用 np.where 创建其他列,但它不适用于这一列。

train["location"] = np.where(3750901.5068 <= train["x"] <= 3770901.5068 
and -19268905.6133 <= train['y'] <= -19208905.6133, 1, 0)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

python numpy python-3.x pandas

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

使用来自两列的值对 Pandas 数据框进行子集

我正在尝试根据两列的值对 Pandas 数据框进行子集化。我试过这个代码: df[df['gold']>0, df['silver']>0, df['bronze']>0]但这没有用。

我也试过: df[(df['gold']>0 and df['silver']>0)。这也不起作用。我收到一条错误消息:

ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

你有什么建议?

python subset dataframe pandas

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

如何一次比较四列pandas数据帧?

我有一个数据帧.

数据帧:

   Symbol1   BB Symbol2 CC 
0         ABC    1  ABC       1
1         PQR    1  PQR       1
2         CPC    2  CPC       0
3         CPC    2  CPC       1
4         CPC    2  CPC       2
Run Code Online (Sandbox Code Playgroud)

我想比较Symbol1Symbol2BB使用CC,如果他们是相同的话,我想那行唯一的其他行必须从数据帧中删除.

预期结果 :

Symbol1   BB Symbol2 CC 
0         ABC    1  ABC       1
1         PQR    1  PQR       1
2         CPC    2  CPC       2
Run Code Online (Sandbox Code Playgroud)

如果比较两行,那么我正在使用:

df = df[df['BB'] == '2'].copy()
Run Code Online (Sandbox Code Playgroud)

它会工作正常.

df = df[df['BB'] == df['offset'] and df['Symbol1'] == df['Symbol2']].copy()
Run Code Online (Sandbox Code Playgroud)

它给了我错误.

错误:

ValueError: …
Run Code Online (Sandbox Code Playgroud)

python indexing conditional-statements dataframe pandas

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

pandas 中“&amp;”和“and”的区别

我有一些代码在 cron(通过 kubernetes)上运行了几个月。

昨天,我的部分代码无法正常工作:

突然间,这个声明不再是“True”(df_temp 和 df_temp4 中都有数据:

if ( len(df_temp > 0) & len(df_temp4 > 0)):
    print "HERE"
Run Code Online (Sandbox Code Playgroud)

然而,这有效:

if ( len(df_temp > 0) and len(df_temp4 > 0)):
    print "HERE"
Run Code Online (Sandbox Code Playgroud)

是否存在某种代码推送会导致此更改?由于我已经运行这段代码几个月了,不确定什么会导致该语句突然失败。

python dataframe pandas

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

使用`或`b布尔值查询pandas数据框?

我有一个简单的pandas数据框.

import pandas as pd    
x = [5, 10, 20, 30, 5, 10, 20, 30, 5, 10, 20, 30]
y = [100, 100, 200, 200, 300, 300, 400, 400, 500, 500, 600, 600]
users =['mark', 'mark', 'mark', 'rachel', 'rachel', 'rachel', 'jeff', 'jeff', 'jeff', 'lauren', 'lauren', 'lauren']

df = pd.DataFrame(dict(x=x, y=y, users=users)
Run Code Online (Sandbox Code Playgroud)

我想保留数据帧的某些行.让我们说所有"rachels"和"jeffs".我试过了df.query:

df=df.query('users=="rachel"' or 'users=="jeff"')
Run Code Online (Sandbox Code Playgroud)

结果是只有一个数据框users=="rachel".有没有办法结合查询?

slice dataframe python-3.x pandas

0
推荐指数
1
解决办法
634
查看次数

熊猫如果其他逻辑不能正常工作

我有这样的数据帧,

ID   F/P     FTE Actual     FTE Calculated
1    F       100              100
2    F       110              110
3    P       90               100
4    P       90               90
Run Code Online (Sandbox Code Playgroud)

我想生成结果列

如果FTE Actual不等于FTE Calculated,则结果为FALSE,我们不再检查.

如果为真,那么我们查看F/P列,如果F/P列的值为F,则FTE_Calculated应该等于100.

如果为真,则我们查看F/P列,如果F/P列的值为P,则FTE_Calculated应小于100.

ID   F/P     FTE Actual     FTE Calculated   Expected Result
1    F       100              100                 True
2    F       110              110                 False (as it is more than 100)
3    P       90               100                 False
4    P       90               90                  True
Run Code Online (Sandbox Code Playgroud)

python pandas

0
推荐指数
1
解决办法
59
查看次数