如何修改Excel行与使用熊猫DataFrame条件?



我正在研究数据注释。数据取自推文。以下是我正在使用的示例行。我已经用这种格式注释了大约5000个数据。当我发现不是用英语写的文本(tweet)时,使用非英语列。

<表类> ID 文本 情绪悲伤 爱 愤怒欢乐恐惧NonEnglishtbody><<tr>1我很伤心21000002我很高兴10001003四00000014Selamat siang0000001

我们可以选择id,textNonEnglish以外的列,然后对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

最新更新