如何借助索引将熊猫数据框列中的值提取到新数据框中?

时间:2019-01-16 22:08:22

标签: python pandas dataframe indexing interpolation

我是在python中使用熊猫的学习者。

我收到了以csv格式从Vehicle接收到的数百万个驾驶数据信号。 示例:不同时间间隔的车速,制动压力等

样本数据:(仅供参考,我仅使用2个Data_Names和样本值)

Time      Data_Name         Values
0.5       Vehicle_Speed     10
1         Brake_Pressure    12
2         Vehicle_Speed     30  
3         Vehicle_Speed     40
4         Vehicle_Speed     50
5         Brake_Pressure    10
6         Brake_Pressure    15
7         Vehicle_Speed     30
8         Brake_Pressure    15     
9         Brake_Pressure    20
10        Vehicle_Speed     25

要求:

第一个要求是:我希望以上数据采用以下格式。

 Time      Vehicle_Speed_Values       Brake_pressure_Value          
    0.5       50                      0
    1         0                       12
    2         30                      0  
    3         40                      0
    4         50                      0
    5         0                       10
    6         0                       15
    7         30                      0
    8         0                       15     
    9         0                       20
    10        25                      0

第二个要求:通过填充对应于时间的零值在其中进行插值。 第三件:绘制Vehicle_Speed(Vs)制动压力图以进行比较

我的代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


# Time Data
b1 = pd.Dataframe([0.5,2,3,4,7,25])

# Vehicle_Speed_Values       
b2 = pd.Dataframe([50,30,40,50,30,25])

# Combine two data frames
d1 = pd.concat([b1,b2], axis=1)
# Name the columns
d1.columns = ["Time","Speed"]

# Create a new data frame with column Names as Vehicle_Speed_Values& Brake_pressure_Value filled with zeros
a = pd.Dataframe([0.5,1,2,3,4,5,6,7,8,9,10])
a.columns = ["Time"]
alength = len(a["Time"])
a["Vehicle_Speed_Values"] = pd.Series(np.zeros(alength), index =a.index)
a["Brake_pressure_Value"] = pd.Series(np.zeros(alength), index =a.index)

# using for loop and index functions copy the value from d1 (data frame)to a (dataframe)

for i in range(len(d1.index)):
    if d1.Time[i] in a["Time"]:
        j = d1.Time[i]
        find_index = a.loc[a["Time"] == j].index[0]
        a.Vehicle_Speed_Values[find_index] = d1.Speed[i]

面临的问题: 执行时显示警告消息。(SettingWithCopyWarnings) 即使我得到了预期的结果,但对于1000万个值的大数据集,仍显示警告消息,我无法继续进行操作。

请求:

我不是一个好的编码员,无论如何我都相信会有一些简单的方法可以完成上述过程。 请阐明一些避免这种问题的方法或一种新的解决方法...

0 个答案:

没有答案