【发布时间】:2021-01-24 16:52:59
【问题描述】:
data =
Symbol Value Day
0 AACG 1.8708 1
1 AACG 1.8500 2
2 AACG 1.8869 3
3 AACG 1.8200 4
4 AACG 1.8578 5
... ... ... ...
3407024 ZYXI 5.25 1
3407025 ZYXI 4.96 2
3407026 ZYXI 4.99 3
3407027 ZYXI 4.99 4
3407028 ZYXI 4.95 5
... ... ... ...
3407250 ZYXI 8.1500 227
3407251 ZYXI 8.2600 228
3407252 ZYXI 8.3900 229
3407253 ZYXI 8.1200 230
3407254 ZYXI 8.0700 231
import pandas as pd
import numpy as np
for index, row in data.iterrows():
for i in range(1, 91):
cstr = 'day-' + str(i)
val = 'NaN'
try:
val = float(data[np.logical_and(data['Symbol'] == row['Symbol'],
data['Day'] == row['Day'] - i)].Value)
except:
val = 'NaN'
data.loc[index,cstr] = val
函数循环遍历数据框中的每一行
对于数据框中的每一行,它循环 90 次 (i)
对于每个循环,它会添加一个带有值的列
值是数据框中的值,符号与行相同,但天为从行减去i的天
output =
Symbol Value Day day-1 day-2 day-3 day-4... day-89 day-90
0 AACG 1.8708 1 NaN NaN NaN NaN
1 AACG 1.8500 2 1.8708 NaN NaN NaN
2 AACG 1.8869 3 1.8500 1.8708 NaN NaN
3 AACG 1.8200 4 1.8869 1.8500 1.8708 NaN
4 AACG 1.8578 5 1.8200 1.8869 1.8500 1.8708
5 AACG 1.8709 6 1.8578 1.8200 1.8869 1.8500
6 AACG 1.8700 7 1.8709 1.8578 1.8200 1.8869
7 AACG 1.8800 8 1.8700 1.8709 1.8578 1.8200
8 AACG 1.8000 9 1.8800 1.8700 1.8709 1.8578
9 AACG 1.7900 10 1.8000 1.8800 1.8700 1.8709
【问题讨论】:
-
请从intro tour 重复on topic 和how to ask。您似乎正在为您尚未描述的问题寻找代码审查 - 其中任何一个都表明 Stack Overflow 不适合您的问题。
-
您的预期输出是什么?你想做什么。你能用简单的英语解释一下吗
-
@JoeFerndz 我基本上是将前 90 天的值作为列添加到每一行,所以每一行都是一组前 90 天的值,可以绘制图表
-
您想要 90 列? 90 列中的每一列的值是多少?你能拿 2 行给我们示例输出吗
-
@JoeFerndz 我添加了它
标签: python pandas numpy optimization