我正在研究数据注释。数据取自推文。以下是我正在使用的示例行。我已经用这种格式注释了大约5000个数据。当我发现不是用英语写的文本(tweet)时,使用非英语列。
<表类>
ID
文本
情绪悲伤
爱
愤怒欢乐恐惧 NonEnglish tbody><<tr>1 我很伤心 2 1 0 0 0 0 0 2我很高兴 1 0 0 0 1 0 0 3 四 0 0 0 0 0 0 1 4Selamat siang 0 0 0 0 0 0 1 表类>
我们可以选择id
,text
和NonEnglish
以外的列,然后对NonEnglish
= 1的行进行过滤,并将相应的选中列设置为NaN
,如下所示:
cols = df.columns.difference(['id', 'text', 'NonEnglish'])
df.loc[df['NonEnglish'] == 1, cols] = np.nan
结果:
print(df)
id text sentiment sadness love anger joy fear NonEnglish
0 1 I am sad 2.0 1.0 0.0 0.0 0.0 0.0 0
1 2 I am happy 1.0 0.0 0.0 0.0 1.0 0.0 0
2 3 Selamat pagi NaN NaN NaN NaN NaN NaN 1
3 4 Selamat siang NaN NaN NaN NaN NaN NaN 1
如果你想设置为空字符串,你可以使用:
cols = df.columns.difference(['id', 'text', 'NonEnglish'])
df.loc[df['NonEnglish'] == 1, cols] = ''
但是请记住,这样,在将这些条目填充为空白之后,相关列将成为object
类型(字符串类型)而不是数字类型。如果你只是为了显示而需要这些数字,那也可以。但是,如果需要进一步计算所需的数据,最好采用第一种方法,用NaN
填充这些条目。
结果:
print(df)
id text sentiment sadness love anger joy fear NonEnglish
0 1 I am sad 2 1 0 0 0 0 0
1 2 I am happy 1 0 0 0 1 0 0
2 3 Selamat pagi 1
3 4 Selamat siang 1
假设您的数据框架名为df,您可以这样做:
import numpy as np
columns = ['Sentiment', 'Sadness', 'Love', 'Anger', 'Joy', 'Fear']
for index, row in df.iterrows():
if row['NonEnglish'] == 1:
for col in columns:
df.loc[index, col] = np.nan