为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫数据框操作

熊猫数据框操作

一只甜甜圈 2022-10-06 19:39:58
谁能向我解释如何解决这个问题。假设我有一个数据框,例如: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)):但它不起作用。谁能帮我?
查看完整描述

1 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

如果问题基本上是关于在数据框中插入另一个时间列,这将是一个解决方案:


import pandas as np


df = 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  T50sec

0   A       g       180     0.1     5.3

1   B       t       345     0.4     5.7

2   C       x       234     0.5     8.0

3   D       z       654     1.0     2.0

添加时间栏:


import numpy as np

time = 'T15sec'


if not time in df:

    df[time] = np.NaN


df.iloc[:, 3:] = df.iloc[:, 3:].T.sort_index().interpolate().T


df[['toto', 'titi', 'Energy', 'T10sec', time, 'T50sec']]


    toto    titi    Energy  T10sec  T15sec  T50sec

0   A       g       180     0.1     2.70    5.3

1   B       t       345     0.4     3.05    5.7

2   C       x       234     0.5     4.25    8.0

3   D       z       654     1.0     1.50    2.0


查看完整回答
反对 回复 2022-10-06
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信