ฉันกำลังสร้างสคริปต์หลามที่คำนวณสถิติ d' โดยใช้ข้อมูลจากไฟล์ CSV แต่ข้อมูลใน CSV จำเป็นต้องได้รับการจัดการเพื่อให้สามารถคำนวณ d' ได้ คำถามของฉัน: ฉันต้องใช้โค้ดใดในการแปลงข้อมูลใน data frame ที่สร้างจาก csv
รายละเอียด:
ฉันจำเป็นต้องรู้ว่ามีกี่รายการที่เกี่ยวข้องกับหนึ่งในสี่หมวดหมู่ ไม่ว่าจะเป็นการตี พลาด การเตือนที่ผิดพลาด หรือการปฏิเสธที่ถูกต้อง โดยแต่ละหมวดหมู่ถูกกำหนดโดยการกระตุ้นและการตรวจจับ เช่น
- Hit is signified by a "1" stimulation happening at the same time a "3" detection happens
- Miss is signified by "1" stimulation happening at the same time a "4" detection happens
- False Alarm is signified by "2" stimulation happening at the same time a "3" detection happens
- Correct Rejection is signified by "2" stimulation happening at the same time a "4" detection happens
ข้อมูลที่ฉันกำลังดำเนินการมาหาฉันในรูปแบบ CSV ซึ่งแสดงรายการลำดับการกระตุ้นและการตรวจจับเกิดขึ้นในคอลัมน์เดียว โดยเมื่อมีการประกาศการกระตุ้น ระบบจะนำไปใช้กับการตรวจจับที่ตามมาจนกว่าจะมีการเรียกการกระตุ้นใหม่ ดูเหมือนว่านี้:
Identifier
0 1
1 3
2 4
3 3
4 2
5 4
6 3
7 3
ฉันต้องการกรอบข้อมูลที่มีลักษณะดังนี้:
Stim Detect
0 1 3
1 1 4
2 1 3
3 2 4
4 2 3
5 2 3
ตอนนี้ฉันอยู่ที่ไหน
เมื่อมองไปรอบๆ ที่นี่ และจากการถามคนไม่กี่คนที่ฉันรู้ว่าใครรู้จัก Python เป็นอย่างดี ฉันถูกสั่งให้ใช้แพนด้าเพื่อจัดการข้อมูล มีการอ่านข้อมูลและส่งออกไปยังค่าลักษณนามซึ่งสามารถบอกฉันได้ว่าบางแถวในกรอบข้อมูลเป็นการเข้าชม พลาด สัญญาณเตือนที่ผิดพลาด หรือการปฏิเสธที่ถูกต้อง แต่ฉันไม่มีกรอบข้อมูลที่อธิบายข้างต้นที่ทำ ฉันต้องการ. รหัสของฉันอยู่ด้านล่าง
import pandas as pd
df = pd.read_csv('file1.csv')
def stim(row):
if row['Identifier'] == 1:
return 1
elif row['Identifier'] == 2:
return 2
def detect(row):
if row['Identifier'] == 3:
return 3
elif row['Identifier'] == 4:
return 4
def classifier(row):
return row['Stim']+row['Detect']
df['Stim'] = df.apply(stim,axis=1)
df['Detect'] = df.apply(detect,axis=1)
df['Classifier'] = df.apply(classifier,axis=1)
data frame ที่ฉันได้รับคือ:
Identifier Stim Detect Classifier
0 1 1 NaN NaN
1 3 NaN 3 NaN
2 4 NaN 4 NaN
3 3 NaN 3 NaN
4 2 2 NaN NaN
5 4 NaN 4 NaN
และ data frame ที่ฉันต้องการจะเป็นดังนี้:
Identifier Stim Detect Classifier
0 1 1 NaN NaN
1 3 1 3 4
2 4 1 4 5
3 3 1 3 4
4 2 2 NaN NaN
5 4 2 4 6