微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-比较熊猫Df中的每一行值元素,并根据比较结果输入一个字符串

我是处理熊猫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 举报,一经查实,本站将立刻删除。

相关推荐