我正在尝试将前一行的值与当前行的值进行比较,并根据比较记录注释。 这是我的数据集摘录:
+-----------------------------------+----
| 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
答案 0 :(得分:0)
您想研究shift
和np.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