【问题标题】:How to add prefix to rows of a columns if (conditions met)如果(满足条件)如何为列的行添加前缀
【发布时间】:2017-01-03 23:49:14
【问题描述】:

我有一个包含某些列和行的数据框,如果满足某些条件,我需要在其中为其中一列的行添加前缀,

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']})

我需要根据 Samples 数据框中的值向 df.col2 添加一个后缀,我用 np.where 进行了尝试,如下所示,

df['col2'] = np.where(df.col2.isin(samples.Sam),'Yes' + df.col2, 'Non_'+ df.col2)

这会引发错误,

TypeError: can only perform ops with scalar values

它不返回我要求的内容,并抛出错误 最后数据框应该是这样的,

>>>df.head()

col col2
a   Yes_PFD_1
0   no_PFD_2
2   no_PFD_3
3   no_PFD_4
5   Yes_PFD_5

【问题讨论】:

  • 对我来说它有效,什么是错误?
  • Samples 重命名为samples 应该可以解决问题。
  • df['col2'] = np.where(df.col2.isin(samples.Sam),'Yes_' + df.col2, 'no_'+ df.col2) 需要,但似乎还有其他问题。
  • 是的,出了点问题,我找不到 :)
  • 是的,我在我的问题中粘贴了错误

标签: python pandas


【解决方案1】:

一旦我更改了“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']

输出..

0     YesPFD_1
1    Non_PFD_2
2    Non_PFD_3
3    Non_PFD_4
4     YesPFD_5
Name: col2, dtype: object

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多