相关疑难解决方法(0)

使用花括号在Python中初始化Set

我正在学习python,我有一个关于初始化集的新手问题.通过测试,我发现可以像这样初始化一个集合:

my_set = {'foo', 'bar', 'baz'}
Run Code Online (Sandbox Code Playgroud)

这样做是否有任何缺点,而不是标准方式:

my_set = set(['foo', 'bar', 'baz'])
Run Code Online (Sandbox Code Playgroud)

还是只是一个风格问题?

python set python-2.7

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

检查df中是否存在多列

我想知道如何正确检查,如果在存在多列df,说如果我想测试,如果两列A,并B在存在df

if `A` in df and `B` in df:
    # some code
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做这个检查?用 测试过['A', 'B'] in df,但失败了。

更新

 pd.Series(['A', 'B']).isin(df.columns).all()
Run Code Online (Sandbox Code Playgroud)

会做的工作。

python dataframe python-3.x pandas

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

Pandas - 如何检查是否存在多索引列

我的问题类似于如何检查Pandas中是否存在列,但是对于多索引列情况.

我正在尝试使用源自另一个文件的列名来处理多索引列数据框中的值 - 因此需要检查列是否存在.一个代表性的例子如下:

import pandas as pd
from numpy.random import randint,randn

df = pd.DataFrame({ 'A': [randint(0,3) for p in range(0,12)],'B': [0.1* randint(0,3) for p in range(0,12)],
      'C': [0.1*randint(0,3) for p in range(0,12)],'D': randn(12),
    })

df1 = df.groupby(['A','B','C']).D.sum().unstack(-1)
df1 = df1.T
df1
A           0                   1                             2          
B         0.0       0.2       0.0       0.1       0.2       0.0       0.1
C                                                                        
0.0       NaN       NaN       NaN  0.845316       NaN  0.555513       NaN
0.1       NaN  0.139371       NaN       NaN       NaN       NaN -0.260868
0.2  5.002509       NaN  0.637353  0.438863  0.943098       NaN …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

检查多个列索引是否存在

有没有更复杂的方法

if numpy.all(map(lambda c: c in df.columns, ['Column 1', 'Columns 2'])):
    do_something()
Run Code Online (Sandbox Code Playgroud)

python pandas

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

Pandas Dataframe将带有两个值的分类列重新映射为二进制

我有一个数据框,想要检查"男性"或"女性"的字符串,如果数据框包含它们,它将替换为"1"或"0".由于@Anand S Kumar的回答,目前我正在使用下面的代码.

if dataframe['gender']:
    dataframe['gender'].replace([0,1],['Female','Male'],inplace=True)
if dataframe['sex']:
    dataframe['sex'].replace([0,1],['Female','Male'],inplace=True)
Run Code Online (Sandbox Code Playgroud)

但是,我还要介绍任何其他变体,如"男性","M"和"男性"或"女性","F","f",而宁愿避免为每个变体使用两个if语句.

我尝试过使用更大的列表,例如...

dataframe['gender'].replace([0,1,0,1,0,1,0,1],['Female','Male','male','female','M','F','m','f'],inplace=True)
Run Code Online (Sandbox Code Playgroud)

一本字典...

dataframe['gender'].replace({0:'Female',1:'Male', 0:'female',1:'male',0:'F',1:'M',0:'f',1:'m'},inplace=True)
Run Code Online (Sandbox Code Playgroud)

但是得到了"系列的真实价值是模棱两可的".两者的ValueError.

有没有人知道更好的方式,或者我目前的尝试做错了什么?

提前致谢!

编辑:我的ValueError是因为我的if语句含糊不清.我改变它if 'gender' in dataframe.columns:来修复它.在这里找到了修复.

python dataframe pandas categorical-data

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