2017-06-21 116 views
1

我有一個熊貓數據框。大約有50列和50000行。如果一個colums有Python:如何根據其他條件改變一列的值?

str.contains('certain response') 

我想換另一列響應

'NA' 

我會怎麼做這行?

+0

對不起,我不明白你的問題:是否意味着以下?如果一列的值包含「特定響應」,則您希望將另一列的值更改爲「不適用」(在同一行中)。 – nCessity

+0

是的!到目前爲止,我沒有這個工作。 df = df.loc [df.column1.contains('certain response'),'column 2'] ='NaN' –

+1

[Python PANDAS,基於另一個值更改一個值](https:// stackoverflow。 com/questions/19226488/python-pandas-change-one-value-based-on-another-value) – gobrewers14

回答

0

我相信你需要str.contains的條件,如果需要通過NaN使用np.nan取代:

df.loc[df.column1.str.contains('certain response'), 'column 2'] = np.nan 

或者使用mask,如果True得到NaN S:

df['column 2'] = df['column 2'].mask(df.column1.str.contains('certain response')) 

樣品:

df = pd.DataFrame({'column1':['certain response','certain response 2','aaa'], 
        'column 2':[2,3,4]}) 
df['column 2'] = df['column 2'].mask(df.column1.str.contains('certain response')) 
print (df) 
    column 2    column1 
0  NaN certain response 
1  NaN certain response 2 
2  4.0     aaa 
+0

好的,我試過了。我得到一個錯誤:TypeError:錯誤的操作數類型爲一元〜:'float' –

+0

需要'na'參數 - ''df.column1.str.contains('確定響應',na = False)' – jezrael

+0

知道了!謝謝! –

相關問題