我试图找到一种方法来表示np.where()
代码中以外的条件。在我下面的例子中,
import pandas as pd
import numpy as np
file='insert path'
df = pd.read_csv(file)
df.loc[:, ['col_a','col_b']] = df.loc[:, ['col_a','col_b']].astype(str)
dfseg=df['col_a']+'-'+df['col_b']+'-'+df['col_c']
df['col_d'] = np.where((df['col_a']=='101')|(df['col_a']=='337')|(df['col_a']=='524'),dfseg,df['col_a'])
df
条件是
一种。df['col_a']=='101' 或
湾。df['col_a']=='337' 或
C。df['col_a']=='524'
有什么方法可以在代码外部表示这些条件?或者通过另一个python方法/函数?可以tkinter
提取这部分代码并编辑这些条件吗?希望找到一种方法可以在外部而不是在脚本内审查和管理这些条件等。
我已经尝试过np.isin()
,np.in1d
但收到了错误的结果:
print(np.in1d(df1['col_a'],df2['col_a']))
print(np.isin(df1['col_a'],df2['col_a']))
输出:
[False False False False False False]
[False False False False False False]
从以下:
df2:
col_a
0 101
1 524
2 337
df1:
col_a col_b col_c
0 101 104 AAB
1 337 103 CAD
2 524 204 DER
3 129 404 EEH
4 842 108 HHR
5 337 108 HHE
df2[col_a].isin df1[col_a]
0 False
1 False
2 False
3 False
4 False
5 False
Name: col_a, dtype: bool
df1[col_a].isin df2[col_a]
0 True
1 True
2 True
Name: col_a, dtype: bool
将df转换为numpy
df1numpy = df1.to_numpy()
同样产生了所有“假”匹配np.isin()
。谢谢你的想法。