首页 > 解决方案 > 根据其他列值在列值中添加整数

问题描述

我有一列TS从 -60 到 60 不等,我有一列 V从 -0.1 到 0 到 1 并且一次又一次地重复。我想将 15 添加到TSwhen 变量的值V<0,减去 15 when V>0TS和中的值采用Vfloat64 格式。其中也有一些nan值,TS因此可以将它们替换为我在这里所做的零。我试过这个,但后来我不知道该怎么做。

data = pd.read_table(filename,skiprows=104,decimal=',', sep=';',header=None,names=["V ","TS "]) 
`` 



    import numpy as np   
    TS = data[data.keys()[9]]
    TS = np.array(TS)
    np.nan_to_num(TS)
    TS4 = TS[V<0]+15
    TS5 = TS[V>0]-15
    TS6 = TS[V==0]
    TS7 = TS[np.isnan(TS)] = 0

在哪里


+-------+--------------------+--------------------+------------+
| Index |      TS (kPa)      |      NS(kPa)       | V (mm/min) |
+-------+--------------------+--------------------+------------+
|     0 |          36.052101 |          97.384283 |       -0.1 |
|     1 |          20.240409 |         102.012401 |       -0.1 |
|     2 |          10.491882 |  97.26910600000001 |       -0.1 |
|     3 |           8.717836 |         101.145252 |       -0.1 |
|     4 | 3.7307309999999996 |          99.038843 |       -0.1 |
|     5 |           3.585318 |          99.413168 |       0.1 |
|     6 |             3.6144 |         100.562722 |       0.1 |
|     7 |           2.676773 | 100.13413100000001 |       0.1 |
|     8 |          -4.776546 |          97.868247 |       0.1 |
+-------+--------------------+--------------------+------------+

预期产出


+-------+--------------------+--------------------+------------+
| Index |      TS (kPa)      |      NS(kPa)       | V (mm/min) |
+-------+--------------------+--------------------+------------+
|     0 |          51.052101 |          97.384283 |       -0.1 |
|     1 |          35.240409 |         102.012401 |       -0.1 |
|     2 |          25.491882 |  97.26910600000001 |       -0.1 |
|     3 |           23.717836 |         101.145252 |       -0.1 |
|     4 | 18.7307309999999996 |          99.038843 |       -0.1 |
|     5 |           -12.585318 |          99.413168 |       0.1 |
|     6 |             -12.6144 |         100.562722 |       0.1 |
|     7 |           -14.676773 | 100.13413100000001 |       0.1 |
|     8 |          -19.776546 |          97.868247 |       0.1 |
+-------+--------------------+--------------------+------------+
 

标签: pythonpandasdataframenumpy

解决方案


使用后从 TSnp.where更换。NaN

输入数据:

>>> df
          TS          NS    V
0  36.052101   97.384283 -0.1
1  20.240409  102.012401 -0.1
2  10.491882   97.269106 -0.1
3   8.717836  101.145252 -0.1
4   3.730731   99.038843 -0.1
5   3.585318   99.413168  0.1
6   3.614400  100.562722  0.1
7   2.676773  100.134131  0.1
8  -4.776546   97.868247  0.1
9        NaN   99.313814  0.1
df['TS'] = np.where(df['V'] < 0, df['TS'] + 15, df['TS'] - 15)
df['TS'] = df['TS'].fillna(0)

输出结果:

>>> df
          TS          NS    V
0  51.052101   97.384283 -0.1
1  35.240409  102.012401 -0.1
2  25.491882   97.269106 -0.1
3  23.717836  101.145252 -0.1
4  18.730731   99.038843 -0.1
5 -11.414682   99.413168  0.1
6 -11.385600  100.562722  0.1
7 -12.323227  100.134131  0.1
8 -19.776546   97.868247  0.1
0   0.000000   99.313814  0.1

推荐阅读