将上一行与当前行进行比较

时间:2018-11-29 09:32:11

标签: python csv

我正在尝试将前一行的值与当前行的值进行比较,并根据比较记录注释。 这是我的数据集摘录:

+-----------------------------------+----
|              depth    |col1| fomration|
+-----------------------------------+----
| 2300                  | 1 |    form1  |
| 2305                  | 2 |    form2  |
| 2310                  | 2 |    form2  |
| 2315                  | 3 |    form2  |
| 2320                  | 3 |    form3  |
+-----------------------------------+----

我需要做的是比较formation列中的值,如果它不等于先前的值,请写新的列,其中注释将等于不等于...我尝试了以下代码:

data=pd.read_csv(path_csv) formation_update=[]

for i in data.formation:
if row[i]==row[i-1]:
    formation_update.append('eqaul')
else:
   formation_update.append('not equal')

data['formation_update'] = formation_update

这是代码的输出:

    if row[i]==row[i-1]:
    TypeError: 'float' object is not subscriptableenter code here

1 个答案:

答案 0 :(得分:0)

您想研究shiftnp.where()。玩具示例:

import pandas as pd
import numpy as np

df = pd.DataFrame({'a': [1, 2, 2, 4], 'b': [5, 6, 7, 8]})
df['comparison'] = np.where((df['a'].shift(-1) == df['a']), 'equal', 'not equal') 
print(df)

哪个给:

   a  b comparison
0  1  5  not equal
1  2  6      equal
2  2  7  not equal
3  4  8  not equal