给定一个数据帧:
d = {'A': [2, 1, 4, 5, 7, 8, 7, 5], 'B': [5, 7, 7, 6, 10, 9, 12, 10]}
testdf = pd.DataFrame(data=d)
A B
0 2 5
1 1 7
2 4 7
3 5 6
4 7 10
5 8 9
6 7 3
7 5 2
我正在比较这两列,如果A>;A-1和B<;B-1,否则附加“断开”
array = []
for i in range(1,len(testdf)):
if testdf.A[i] > testdf.A[i-1]:
if testdf.B[i] < testdf.B[i-1]:
array.append('INSIDE')
else:
array.append('BROKEN')
结果是:
['BROKEN', 'INSIDE', 'BROKEN', 'INSIDE']
但我希望:
['BROKEN', 'BROKEN', 'INSIDE', 'BROKEN', 'INSIDE', 'BROKEN', 'BROKEN']
我尝试了循环起点的不同变化
for i in range(len(testdf)-1):
但它只会导致关键错误
如何改进代码以使其按预期运行
对于基于pandas的方法,可以使用^{} :
给你:
输出:
对于预期的输出,需要附加
else
语句:非循环解决方案,也有已测试的第一个值,因此与原始值相同的长度,如果需要相同的输出,则通过索引
[1:]
删除第一个值:相关问题 更多 >
编程相关推荐