我有一个看起来像这样的数据框:
currTime=$(ls -lu | grep test01 | awk '{print $8}')
currHour="${currTime:0:2}"
currMin="${currTime:3:3}"
check=0
while [ true ]
do
timestamp=$(ls -lu | grep test01 | awk '{print $8}')
timeHour="${timestamp:0:2}"
timeMin="${timestamp:3:3}"
if (( $timeHour > $currHour )) || (( $timeMin > $currMin )) || (($timeHour < $currHour ))
then
check=1
set -m
fg %1
./tool.sh
break
fi
sleep 1
done
我想创建两个新列,即df.speaker_1和df.speaker_2。当df.speaker == 2时,我希望df.speaker_2包含df.word的值。当df.speaker!= 2时,我希望它包含一个空字符串。对于其他扬声器值,将重复相同的操作。它应该如下所示:
word start stop speaker
0 but that's alright 2.72 3.47 2
1 we'll have to 8.43 9.07 1
2 okay sure 9.19 11.01 2
3 what? 11.02 12.00 1
4 I agree 12.01 14.00 2
5 but i disagree 14.01 17.00 2
6 thats fine 17.01 19.00 1
7 however you are 19.01 22.00 1
8 like this 22.01 24.00 1
9 and 24.01 25.00 1
任何建议将不胜感激,谢谢。
答案 0 :(得分:1)
您可以从列word
中复制值,然后根据需要用空字符串替换:
df['speaker_1'] = df['word']
df['speaker_2'] = df['word']
df.loc[df['speaker'] != 1, 'speaker_1'] = ''
df.loc[df['speaker'] != 2, 'speaker_2'] = ''
或者,您可以使用apply
,但我发现这种情况更简单。
答案 1 :(得分:0)
您可以使用pd.DataFrame.mask()
:
df['speaker_1'] = df.word.mask(df.speaker!=1, '')
df['speaker_2'] = df.word.mask(df.speaker!=2, '')
# word start ... speaker_1 speaker_2
# 0 but that's alright 2.72 ... but that's alright
# 1 we'll have to 8.43 ... we'll have to
# 2 okay sure 9.19 ... okay sure
# 3 what? 11.02 ... what?
# 4 I agree 12.01 ... I agree
# 5 but i disagree 14.01 ... but i disagree
# 6 thats fine 17.01 ... thats fine
# 7 however you are 19.01 ... however you are
# 8 like this 22.01 ... like this
# 9 and 24.01 ... and