猿问

熊猫数据框操作

谁能向我解释如何解决这个问题。


假设我有一个数据框,例如:


Df = {'toto': ["A", "B", "C", "D"], 

      'titi': ["g", "t", "x", "z"],

      'Energy': [180, 345, 234, 654],

      'T10sec': [0.1, 0.4, 0.5, 1], 

      'T50sec': [5.3, 5.7, 8, 2]}

为此,Df我创建了一个类似的函数


def record(letter1, letter2, Energy_value, time):

我想做的是


检查是否:输入值在此Df,如果yes则


Results = Df.thecorrespondingtime[i]

假设对于列'toto'和'titi'输入字母在 中Df,可能有两种情况:


Case1:输入'Energy_value'在Df但不是'time'值然后我必须找到这个值的范围并创建它的列并用插值填充它。


情况2:列值'time'存在,但输入的能量值没有。在这里我需要做一个插值。


我的限制是:如何检查'time'列是否存在以及如何在两个现有值之间放置。输入能量值的相同问题。


在这里,我尝试了什么:


def record(letter1, letter2, Energy_value, time='T15sec'):

    For i in range(len(Df)):

        If ((df.toto[i] == letter1) and 

            (df.titi[i] == letter2) and 

            (df.Energy[i] == Energy_value) and 

            (time in df)):

但它不起作用。谁能帮我?


一只甜甜圈
浏览 132回答 1
1回答

jeck猫

如果问题基本上是关于在数据框中插入另一个时间列,这将是一个解决方案:import pandas as npdf = pd.DataFrame({'toto': ["A", "B", "C", "D"],       'titi': ["g", "t", "x", "z"],      'Energy': [180, 345, 234, 654],      'T10sec': [0.1, 0.4, 0.5, 1],       'T50sec': [5.3, 5.7, 8, 2]})df    toto    titi    Energy  T10sec  T50sec0   A       g       180     0.1     5.31   B       t       345     0.4     5.72   C       x       234     0.5     8.03   D       z       654     1.0     2.0添加时间栏:import numpy as nptime = 'T15sec'if not time in df:    df[time] = np.NaNdf.iloc[:, 3:] = df.iloc[:, 3:].T.sort_index().interpolate().Tdf[['toto', 'titi', 'Energy', 'T10sec', time, 'T50sec']]    toto    titi    Energy  T10sec  T15sec  T50sec0   A       g       180     0.1     2.70    5.31   B       t       345     0.4     3.05    5.72   C       x       234     0.5     4.25    8.03   D       z       654     1.0     1.50    2.0
随时随地看视频慕课网APP

相关分类

Python
我要回答