我有一个包含某些列和行的数据框,如果满足某些条件,我需要在其中一列的行中添加前缀,
df = pd.DataFrame({'col':['a',0,2,3,5],'col2':['PFD_1','PFD_2','PFD_3','PFD_4','PFD_5']})
Samples=pd.DataFrame({'Sam':['PFD_1','PFD_5']})
Run Code Online (Sandbox Code Playgroud)
我需要根据样本数据框中的值向 df.col2 添加后缀,我用 np.where 进行了尝试,如下所示,
df['col2'] = np.where(df.col2.isin(samples.Sam),'Yes' + df.col2, 'Non_'+ df.col2)
Run Code Online (Sandbox Code Playgroud)
这会引发错误,
TypeError: can only perform ops with scalar values
Run Code Online (Sandbox Code Playgroud)
它不会返回我所要求的内容,并且在数据帧最后抛出错误应该是这样的,
>>>df.head()
col col2
a Yes_PFD_1
0 no_PFD_2
2 no_PFD_3
3 no_PFD_4
5 Yes_PFD_5
Run Code Online (Sandbox Code Playgroud)
一旦我改变了“samples”的大写,你的代码对我来说工作得很好..
import pandas as pd
import numpy as np
df = pd.DataFrame({'col':['a',0,2,3,5],'col2': ['PFD_1','PFD_2','PFD_3','PFD_4','PFD_5']})
Samples=pd.DataFrame({'Sam':['PFD_1','PFD_5']})
df['col2'] = np.where(df.col2.isin(Samples.Sam),'Yes' + df.col2, 'Non_'+ df.col2)
df['col2']
Run Code Online (Sandbox Code Playgroud)
输出..
0 YesPFD_1
1 Non_PFD_2
2 Non_PFD_3
3 Non_PFD_4
4 YesPFD_5
Name: col2, dtype: object
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4557 次 |
| 最近记录: |