我是处理熊猫Df的新手.
我想比较每一行的每一列元素.
需求:
如果1行的列中的所有元素均为零,则在新列中输入“ More False”,并用与其索引对应的零填充.
请参阅下面的Df以了解清楚
My Data Frame:
Time Brake Speed Strgangle index Target
0 1678.39 0.000000 0.000000 0.000000 167739 0
1 1678.40 15.00000 0.000000 0.000000 167740 0
2 1678.41 0.000000 8.000000 0.000000 167741 0
3 1678.42 0.000000 0.000000 2.000000 167742 0
4 1678.43 5.000000 20.10000 0.000000 167743 0
5 1678.44 0.150000 0.000000 -1.16500 167744 0
6 1678.45 0.000000 20.10 2.000000 167742 0
7 1678.47 0.150000 25.00000 -1.16500 167744 0
My Requirement :
1. If Brake = 0, Speed =0, Strg angle=0
--> Input a str in corresponding Target index as 'More False'
2. If Brake = Value, Speed = Value, Strg angle=Value
--> Input a str in corresponding Target index as 'More True'
3. As above conditions i should input the string in Target column based on my requirement
.
所需的实际Df:
Time Brake Speed Strgangle index Target
0 1678.39 0.000000 0.000000 0.000000 167739 MoreFalse
1 1678.40 15.00000 0.000000 0.000000 167740 False
2 1678.41 0.000000 8.000000 0.000000 167741 False
3 1678.42 0.000000 0.000000 2.000000 167742 False
4 1678.43 5.000000 20.10000 0.000000 167743 True
5 1678.44 0.150000 0.000000 -1.16500 167744 True
6 1678.45 0.000000 20.10 2.000000 167742 True
7 1678.47 0.150000 25.00000 -1.16500 167744 MoreTrue
我尝试使用If循环在Target列中输入所需的字符串,但是我收到SettingWithcopy警告.
我敢肯定,对于上述问题将有一些简单的方法.
解决方法:
由于只有4种可能性,因此请在各列中找到非零值的数量,然后映射结果:
d = {0: 'MoreFalse', 1: 'False', 2: 'True', 3: 'MoreTrue'}
df['Target'] = df[['Brake', 'Speed', 'Strgangle']].ne(0).sum(1).map(d)
输出:
Time Brake Speed Strgangle index Target
0 1678.39 0.00 0.0 0.000 167739 MoreFalse
1 1678.40 15.00 0.0 0.000 167740 False
2 1678.41 0.00 8.0 0.000 167741 False
3 1678.42 0.00 0.0 2.000 167742 False
4 1678.43 5.00 20.1 0.000 167743 True
5 1678.44 0.15 0.0 -1.165 167744 True
6 1678.45 0.00 20.1 2.000 167742 True
7 1678.47 0.15 25.0 -1.165 167744 MoreTrue
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。