我有以下熊猫数据框:
start_timestamp_milli end_timestamp_milli name rating
1 1555414708025 1555414723279 Valence 2
2 1555414708025 1555414723279 Arousal 6
3 1555414708025 1555414723279 Dominance 2
4 1555414708025 1555414723279 Sadness 1
5 1555414708025 1555414723279 Happiness 0
6 1555414708025 1555414723279 Anger 0
7 1555414708025 1555414723279 Surprise 0
8 1555414708025 1555414723279 Stress 0
9 1555414813304 1555414831795 Valence 3
10 1555414813304 1555414831795 Arousal 5
11 1555414813304 1555414831795 Dominance 2
12 1555414813304 1555414831795 Sadness 0
13 1555414813304 1555414831795 Happiness 0
14 1555414813304 1555414831795 Anger 0
15 1555414708025 1555414723279 Surprise 0
16 1555414708025 1555414723279 Stress 0
17 1555414921819 1555414931382 Valence 1
18 1555414921819 1555414931382 Arousal 7
19 1555414921819 1555414931382 Dominance 2
20 1555414921819 1555414931382 Sadness 1
21 1555414921819 1555414931382 Happiness 0
22 1555414921819 1555414931382 Anger 1
23 1555414708025 1555414723279 Surprise 0
24 1555414708025 1555414723279 Stress 1
现在,对于每个具有相同
start_timestamp_milli
和end_timestamp_milli
的块,如果悲伤、快乐、愤怒、惊讶和压力的评级为0或0,我想插入一行,名为“中性”,评级为1。新行的start_timestamp_milli
和end_timestamp_milli
应设置为该块的值。生成的数据帧应如下所示:
start_timestamp_milli end_timestamp_milli name rating
1 1555414708025 1555414723279 Valence 2
2 1555414708025 1555414723279 Arousal 6
3 1555414708025 1555414723279 Dominance 2
4 1555414708025 1555414723279 Sadness 1
5 1555414708025 1555414723279 Happiness 0
6 1555414708025 1555414723279 Anger 0
7 1555414708025 1555414723279 Surprise 0
8 1555414708025 1555414723279 Stress 0
9 1555414708025 1555414723279 Neutral 0
10 1555414813304 1555414831795 Valence 3
11 1555414813304 1555414831795 Arousal 5
12 1555414813304 1555414831795 Dominance 2
13 1555414813304 1555414831795 Sadness 0
14 1555414813304 1555414831795 Happiness 0
15 1555414813304 1555414831795 Anger 0
16 1555414708025 1555414723279 Surprise 0
17 1555414708025 1555414723279 Stress 0
18 1555414708025 1555414723279 Neutral 1
19 1555414921819 1555414931382 Valence 1
20 1555414921819 1555414931382 Arousal 7
21 1555414921819 1555414931382 Dominance 2
22 1555414921819 1555414931382 Sadness 1
23 1555414921819 1555414931382 Happiness 0
24 1555414921819 1555414931382 Anger 1
25 1555414708025 1555414723279 Surprise 0
26 1555414708025 1555414723279 Stress 1
27 1555414708025 1555414723279 Neutral 0
怎么能做到?
最佳答案
您可以在groupby
agg
+all
之前进行筛选,然后返回结果
s=df.loc[df.name.isin(['Sadness', 'Happiness', 'Anger', 'Surprise' , 'Stress']),'rating'].\
eq(0).\
groupby([df['start_timestamp_milli'],df['end_timestamp_milli']]).\
agg('all').reset_index().assign(name='Neutral')
df=pd.concat([df,s],sort=False).sort_values(['start_timestamp_milli','end_timestamp_milli'])
df
Out[66]:
start_timestamp_milli end_timestamp_milli name rating
1 1555414708025 1555414723279 Valence 2
2 1555414708025 1555414723279 Arousal 6
3 1555414708025 1555414723279 Dominance 2
4 1555414708025 1555414723279 Sadness 1
5 1555414708025 1555414723279 Happiness 0
6 1555414708025 1555414723279 Anger 0
7 1555414708025 1555414723279 Surprise 0
8 1555414708025 1555414723279 Stress 0
15 1555414708025 1555414723279 Surprise 0
16 1555414708025 1555414723279 Stress 0
23 1555414708025 1555414723279 Surprise 0
24 1555414708025 1555414723279 Stress 1
0 1555414708025 1555414723279 Neutral 0
9 1555414813304 1555414831795 Valence 3
10 1555414813304 1555414831795 Arousal 5
11 1555414813304 1555414831795 Dominance 2
12 1555414813304 1555414831795 Sadness 0
13 1555414813304 1555414831795 Happiness 0
14 1555414813304 1555414831795 Anger 0
1 1555414813304 1555414831795 Neutral 1
17 1555414921819 1555414931382 Valence 1
18 1555414921819 1555414931382 Arousal 7
19 1555414921819 1555414931382 Dominance 2
20 1555414921819 1555414931382 Sadness 1
21 1555414921819 1555414931382 Happiness 0
22 1555414921819 1555414931382 Anger 1
2 1555414921819 1555414931382 Neutral 0
关于python - 根据值向DataFrame添加行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56431408/