【发布时间】:2018-05-31 00:49:03
【问题描述】:
我想在我的数据框列“which_AOI”(范围从 0 -9)中计算感兴趣的区域。我想有一个新列,其结果取决于变量“标记”(范围从 0 - x)添加到数据框中,它告诉我何时完成一张“图片”并且下一张开始(一个标记可以继续可变长度的行)。到目前为止,这是我的代码,但它似乎被卡住并在没有输出的情况下继续运行。我尝试从头开始重建它,但是一旦我到达'if df.marker == num',它就不会停止。我错过了什么? (下面的示例数据框)
## AOI count of spec. type function (in progress):
import numpy as np
import pandas as pd
path_i = "/Users/Desktop/Pilot/results/gazedata_filename.csv"
df = pd.read_csv(path_i, sep =",")
#create a new dataframe for AOIs:
d = {'marker': []}
df_aoi = pd.DataFrame(data=d)
### Creating an Aoi list
item = df.which_AOI
aoi = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] #list for search
aoi_array = [0, 0 , 0, 0, 0, 0, 0, 0, 0, 0] #list for filling
num = 0
for i in range (0, len (df.marker)): #loop through the dataframe
if df.marker == num: ## if marker = num its one picture
for index, item in enumerate(aoi): #look for item (being a number in which_AOI) in aoi list
if (item == aoi[index]):
aoi_array[index] += 1
print (aoi)
print (aoi_array)
se = pd.Series(aoi_array) # make list into a series to attach to dataframe
df_aoi['new_col'] = se.values #add list to dataframe
aoi_array.clear() #clears list before next picture
else:
num +=1
index pos_time pos_x pos_y pup_time pup_diameter marker which_AOI fixation Picname shock
1 16300 168.608779907227 -136.360855102539 16300 2.935715675354 0 7 18 5 save
2 16318 144.97673034668 -157.495513916016 16318 3.08838820457459 0 8 33 5 save
3 16351 152.92560577392598 -156.64172363281298 16351 3.0895299911499 0 7 17 5 save
4 16368 152.132453918457 -157.989685058594 16368 3.111008644104 0 7 18 5 save
5 16386 151.59835815429702 -157.55587768554702 16386 3.09514689445496 0 7 18 5 save
6 16404 150.88092803955098 -152.69479370117202 16404 3.10009074211121 1 7 37 5 save
7 16441 152.76554107666 -142.06188964843798 16441 3.0821495056152304 1 7 33 5 save
【问题讨论】:
-
您是否尝试仅根据另一列的值添加一列?通常不需要为此循环遍历您的数据框。您能否附上您的 .csv 文件示例?
-
@jjj 不是真的,我尽可能附上我的数据框样本(医学研究的数据部分)。我需要标记来告诉我我正在看哪张图片(图片 0 或 1 或 2),并且对于每张图片我想分别计算事件的数量(例如,“8”出现 1 次,“7”在图片中出现 4 次图 1) 中的 0 和 2 x。我想将这些计数列表附加到新的结果数据框以供以后分析。我对此很陌生,所以如果有更简单的方法,我将不胜感激。
标签: list pandas for-loop marker