Python CSV

时间:2018-01-02 14:36:41

标签: python python-2.7 pandas csv dataframe

我将csv转换为名为a的列表。我有办法通过条件分类我的数据。问题是它无法正常工作。如果有任何名为' Stable'在我Cliente的所有内容中,我设置了'Estable'的条件,这不是我需要的,但对于没有'Estable'作为AAA和BBB的所有客户,我希望您放置{{1}我在下面解释代码。

'NoAnalyzed'

2 个答案:

答案 0 :(得分:3)

我相信你需要numpy.wheremap,因为在熊猫中最好避免循环因为慢:

mask =  df['Analisis'] == 'Estable'
df['Status'] = np.where(mask, 'Stable: The client''s performance was Stable', 'NoAnalyzed')

或类似的:

d = {True: 'Stable: The client''s performance was Stable',False: 'NoAnalyzed'}
df['Status'] = mask.map(d)

print (df)
  Cliente       Fecha   Variables Dia Previo        Mayor/Menor  \
0     AAA  27/12/2017  ECPM_medio       0.41  Dentro del Margen   
1     BBB  27/12/2017  ECPM_medio       1.06  Dentro del Margen   
2     CCC  27/12/2017  ECPM_medio       1.06  Dentro del Margen   

  Dia a Analizar    Analisis                                      Status  
0           0.35  Incremento                                  NoAnalyzed  
1           1.06      Alerta                                  NoAnalyzed  
2           1.06     Estable  Stable: The clients performance was Stable  

答案 1 :(得分:0)

问题是您是直接将单个值分配给列而不是列表/数组/系列。单个值在每行中复制自身。我建议您制作一个列表并将其分配给您的df ['状态']列。

status=[]
for elemento in df['Analisis']:
    if elemento == 'Estable'
        status.append('Stable: The client''s performance was Stable')
    else:
        status.append('NoAnalyzed')

df['Status'] = status

这应该有用。