【问题标题】:Is there any way to apply last column first output value value as an input in first column second data in dataframe calculated with other column data有没有办法将最后一列第一个输出值作为输入在数据框中的第一列第二个数据中使用其他列数据计算
【发布时间】:2019-05-11 01:20:00
【问题描述】:

我有一个包含五列数据值的 csv 文件。

五列是['A','B','C','D','time']

这里我的“D”列是输出列,“A”是我的第一列。

所以我想应用任何值在“D”列中表示的值应该是“A”列中的下一个输入,时间范围为一小时。

每隔一小时更改一小时值。

我写了一个代码,值正在显示,但我的最后一列输出不是我的第一列第二个输入。

在这里我上传了我的 coda 和 csv 文件。 谁能帮我解决这个问题。

data = pd.read_csv('data20.csv')
data = pd.DataFrame(data,columns=['time', 'A','B','C','D'])
for i in range(1, len(data)):
    data.loc[i+1,'A'] = data.loc[i, 'D'] + data.loc[i, 'B'] - data.loc[i, 'C']

在我的 csv 文件中,我为行着色。然后两列中表示相同的颜色意味着两列中表示相同的值。

在我的 csv 第一行中 A 列 63 表示,我的输出是 D 列中的 63。 D 列是我想要的输出。然后在 A 列的第二行中,它表示为 0。但我想将先前的输出值(63)作为 A 列输入应用到第二行。然后该值将按 B 列计算并按 C 列减少,然后我想要的输出值为 60 表示在 D 列中。所以像这样的过程还会继续。 所以在 A 列中的 0 值替换为 D 列中的先前输出值。

【问题讨论】:

  • 您的代码完全符合您的要求,那么您在哪里看到不正确的值?在文件中?您是否使用更新的数据框保存了文件?
  • 检查也是如此,并且您的代码有效。所需的输出可能会有所帮助。
  • @Sach 是的,我将它保存在数据框中。但仍然根据我的输出,我的第三个输入没有显示为 104。它显示为 62。所以这就是问题所在。
  • @Zanshin 但是根据我的输出,我的第三个输入仍然没有显示为 104。它显示为 62。这就是问题所在。其他一些输入值也没有正确校正
  • 上次我会问,请提供所需输出的示例。你的解释没有帮助(至少我)

标签: python-3.x pandas


【解决方案1】:

IIUC,您需要使用“D”中的值填充“A”列:df['A'] = df['D'].shift(1)。

但是,仍然不知道为什么您自己的代码是错误的。

【讨论】:

  • 我需要编写这段代码,每隔一小时连续运行一次。那么我怎样才能把那个时间范围放到我的代码中。你对这件事有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多