Pandas 真假匹配
Pandas True False Matching
为此table:
我想生成 'desired_output' 列。实现这一目标的一种方法可能是:
- col_1 中的所有真值都直接传输到 desired_output(红色箭头)
- 在 desired_output 中,将真值置于任何现有真值之上(绿色箭头)
我试过的代码:
df['desired_output']=df.col_1.apply(lambda x: True if x.shift()==True else False)
谢谢
您可以按 |
将按位 OR
原始值链接 Series.shift
:
d = {"col1":[False,True,True,True,False,True,False,False,True,False,False,False]}
df = pd.DataFrame(d)
df['new'] = df.col1 | df.col1.shift(-1)
print (df)
col1 new
0 False True
1 True True
2 True True
3 True True
4 False True
5 True True
6 False False
7 False True
8 True True
9 False False
10 False False
11 False False
试试这个
df['desired_output'] = df['col_1']
df.loc[1:, 'desired_output'] = df.col_1[1:].values | df.col_1[:-1].values
print(df)
以防那些被保存为字符串。 all_caps(真/假)
输入:
col_1
0 True
1 True
2 False
3 True
4 True
5 False
6 Flase
7 True
8 False
代码:
df['desired']=df['col_1']
for i, e in enumerate(df['col_1']):
if e=='True':
df.at[i-1,'desired']=df.at[i,'col_1']
df = df[:(len(df)-1)]
df
输出:
col_1 desired
0 True True
1 True True
2 False True
3 True True
4 True True
5 False False
6 Flase True
7 True True
8 False False
为此table:
我想生成 'desired_output' 列。实现这一目标的一种方法可能是:
- col_1 中的所有真值都直接传输到 desired_output(红色箭头)
- 在 desired_output 中,将真值置于任何现有真值之上(绿色箭头)
我试过的代码:
df['desired_output']=df.col_1.apply(lambda x: True if x.shift()==True else False)
谢谢
您可以按 |
将按位 OR
原始值链接 Series.shift
:
d = {"col1":[False,True,True,True,False,True,False,False,True,False,False,False]}
df = pd.DataFrame(d)
df['new'] = df.col1 | df.col1.shift(-1)
print (df)
col1 new
0 False True
1 True True
2 True True
3 True True
4 False True
5 True True
6 False False
7 False True
8 True True
9 False False
10 False False
11 False False
试试这个
df['desired_output'] = df['col_1']
df.loc[1:, 'desired_output'] = df.col_1[1:].values | df.col_1[:-1].values
print(df)
以防那些被保存为字符串。 all_caps(真/假) 输入:
col_1
0 True
1 True
2 False
3 True
4 True
5 False
6 Flase
7 True
8 False
代码:
df['desired']=df['col_1']
for i, e in enumerate(df['col_1']):
if e=='True':
df.at[i-1,'desired']=df.at[i,'col_1']
df = df[:(len(df)-1)]
df
输出:
col_1 desired
0 True True
1 True True
2 False True
3 True True
4 True True
5 False False
6 Flase True
7 True True
8 False False