熊猫:根据行值减去列

时间:2018-06-23 00:56:51

标签: python pandas

我目前正在处理来自摄像头的数据,该摄像头可跟踪机器人特工和周围人员的位置。我要设置人员相对于机器人的距离,而不是摄像机当前使用的网格。下面是格式化数据的示例:

         x  idx          time  type
0  -24.782    7  1.390789e+09     0    
1   25.832    6  1.390789e+09     0
2   47.513    5  1.390789e+09     0    
3   42.492    4  1.390789e+09     0    
4   10.387    3  1.390789e+09     0    
5  -12.468    2  1.390789e+09     0    
6   44.725    1  1.390789e+09     0    
7  -13.452    0  1.390789e+09     1

Type = 1表示所标识的代理是机器人,我想将Type == 0(人类)的所有'x'值减去机器人的(Type == 1)位置(仅当时间值相同时。)

我为此做了一些徒劳的尝试,但是由于没有反复遍历然后重建数据帧,所以我无法高效地做到这一点。有没有更Python化的方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

按类型分割,按时合并,然后减去:

import UIKit
import Firebase

class ViewController: UIViewController, UITableViewDelegate,     UITableViewDataSource {

@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!

var emptyArray = [String] ()
var depAirp : String = ""
var destAirp : String = ""
var routeName : String = ""
var ref: DatabaseReference!
var keyArray = [String] ()

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.delegate=self
    tableView.dataSource=self
    ref = Database.database().reference()
    tableView.allowsMultipleSelectionDuringEditing = true

    // //create array for table view to be dispaly from fire base
    ref.child("Rotta").observe(.childAdded, with: { (snapshot) in
        let post = snapshot.value as? String
        if let actualPost = post {
        self.emptyArray.append(actualPost)
            self.tableView.reloadData()
        }
    })

}
 // display array on table view
  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cellid", for: indexPath)
                    let text = emptyArray[indexPath.row]
                    cell.textLabel?.text=text
    return cell
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return emptyArray.count

}

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}
//delate data at table view 
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        emptyArray.remove(at: indexPath.row)
        ref.child("Rotta").child(routeName).removeValue()
        tableView.beginUpdates()
        tableView.deleteRows(at: [indexPath], with: .automatic)
        tableView.endUpdates()
    }

}
   // button take data from 2 text field and save into the var and create the name for the routing name

@IBAction func button1(_ sender: Any) {
    depAirp = textField1.text!
    destAirp = textField2.text!
    view.endEditing(true)
    routeName=("\(depAirp)-\(destAirp)")
    ref.child("Rotta").child(routeName).setValue(routeName)
    ref.child("Rotta").child(routeName).child("Dep Airport").setValue(depAirp)
    ref.child("Rotta").child(routeName).child("Dest Airport").setValue(destAirp)
    print(routeName)
    textField1.text=""
    textField2.text=""
    view.endEditing(true)

}
}