Python 基于现有数据帧的条件创建新数据帧
我想创建一个新的dataframe,其中一列包含0或1,具体取决于现有dataframe的条件 在df(现有)数据帧中,我想检查a、b和c列中的值是否同时包含零。如果是这样,则创建一个新的dataframe,其中一列在满足条件时返回零。否则返回1 现有数据帧的示例:Python 基于现有数据帧的条件创建新数据帧,python,pandas,if-statement,Python,Pandas,If Statement,我想创建一个新的dataframe,其中一列包含0或1,具体取决于现有dataframe的条件 在df(现有)数据帧中,我想检查a、b和c列中的值是否同时包含零。如果是这样,则创建一个新的dataframe,其中一列在满足条件时返回零。否则返回1 现有数据帧的示例: df = pd.DataFrame({"a":[0,1,0,0],"b":[0,None,0,None],"c":[0,8,0,10],"new_col":[5,5,5,5]}) mylist = ['a','b','c'] if
df = pd.DataFrame({"a":[0,1,0,0],"b":[0,None,0,None],"c":[0,8,0,10],"new_col":[5,5,5,5]})
mylist = ['a','b','c']
if any((df[mylist] == 0).all(1).values):
print('all zeros')
else:
print('contains nonzero')
df_new = pd.DataFrame({'col':[0,1,0,1]})
我不知道应该用什么来代替打印语句以获得所需的结果
所需数据帧:
df = pd.DataFrame({"a":[0,1,0,0],"b":[0,None,0,None],"c":[0,8,0,10],"new_col":[5,5,5,5]})
mylist = ['a','b','c']
if any((df[mylist] == 0).all(1).values):
print('all zeros')
else:
print('contains nonzero')
df_new = pd.DataFrame({'col':[0,1,0,1]})
提前谢谢 我相信您需要更改支票的条件,而不等于
任何
:
df['out'] = (df[mylist] != 0).any(1).astype(int)
print (df)
a b c new_col out
0 0 0.0 0 5 0
1 1 NaN 8 5 1
2 0 0.0 0 5 0
3 0 NaN 10 5 1
如果需要新的数据帧:
df1 = (df[mylist] != 0).any(1).astype(int).to_frame('col')
print (df1)
col
0 0
1 1
2 0
3 1
它必须使用“if”语句
在pandas中,使用if-else
函数从numpy
-:
也可以使用if-else
解决方案,但不要使用,因为速度慢:
out = []
for x in (df[mylist] == 0).all(1).values:
if np.any(x):
out.append(0)
else:
out.append(1)
df['out'] = out
print (df)
a b c new_col out
0 0 0.0 0 5 0
1 1 NaN 8 5 1
2 0 0.0 0 5 0
3 0 NaN 10 5 1