簡體   English   中英

如何根據多個條件替換 2 個 dataframe 列中的值?

[英]how to replace values in 2 dataframe columns based on multiple conditions?

我在 pandas dataframe 中有列,如下所示:

積極的 中性的 消極的
1 0 1
0 1 0

我希望它看起來像這樣:

積極的 中性的 消極的 混合
0 0 0 1
0 1 0 0

首先,我創建了一個名為混合的列,基於句子既有正面又有負面的事實。 現在,由於我已經有“混合”列,我不需要雙重信息,所以我想用 0 替換正面和負面列中的值(僅用於混合情感句子)。 我嘗試了 np.where 的不同變體,但似乎沒有人了解如何根據這 2 列的條件替換 2 列中的值。 有什么建議么? 謝謝:)

你的問題有點不清楚。 我想你的問題(如果我是正確的)是從這個改變:

積極的 中性的 消極的
1 0 1

對此(因為您有一個名為“混合”的新列):

積極的 中性的 消極的 混合
0 0 0 1

如果是這種情況,那么代碼應該是(為了便於查看,我使用 3 行而不是 1 行制作表格):

import pandas as pd

data = {'Positive': [1, 1, 1], 'Neutral': [0, 0, 0], 'Negative': [1, 1, 1]}
df = pd.DataFrame(data)
print(df)
print(\n)
x = (df['Positive'])
x[1] = 0 
print(df)

結果,在第二行的“Positive”列中,值從“1”變為“0”。

使用不同的索引,您可以在x[i] = 0處自行調整代碼。 類似的代碼應用於“否定”列。

您可以分兩步完成 - 設置混合列 - 然后將 pos/neg 列設置為 0。

>>> df['Mixed'] = 0
>>> df
   Positive  Neutral  Negative  Mixed
0         1        0         1      0
1         0        1         0      0
>>> rows = (df.Positive == 1) & (df.Negative == 1)
>>> df.loc[rows, 'Mixed'] = 1
>>> df.loc[rows, ['Positive', 'Negative']] = 0
>>> df
   Positive  Neutral  Negative  Mixed
0         0        0         0      1
1         0        1         0      0

如果你想一起做,你可以使用df.mask()

>>> df
   Positive  Neutral  Negative  Mixed
0         1        0         1      0
1         0        1         0      0
>>> rows = (df.Positive == 1) & (df.Negative == 1)
>>> df.mask(rows, [0, 0, 0, 1])
   Positive  Neutral  Negative  Mixed
0         0        0         0      1
1         0        1         0      0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM