我正在学习python,我有一个关于初始化集的新手问题.通过测试,我发现可以像这样初始化一个集合:
my_set = {'foo', 'bar', 'baz'}
Run Code Online (Sandbox Code Playgroud)
这样做是否有任何缺点,而不是标准方式:
my_set = set(['foo', 'bar', 'baz'])
Run Code Online (Sandbox Code Playgroud)
还是只是一个风格问题?
我想知道如何正确检查,如果在存在多列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)
会做的工作。
我的问题类似于如何检查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) 有没有更复杂的方法
if numpy.all(map(lambda c: c in df.columns, ['Column 1', 'Columns 2'])):
do_something()
Run Code Online (Sandbox Code Playgroud) 我有一个数据框,想要检查"男性"或"女性"的字符串,如果数据框包含它们,它将替换为"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:来修复它.在这里找到了修复.