gpt4 book ai didi

python - 使用以数字数组命名的列迭代 DataFrame

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:45 24 4
gpt4 key购买 nike

所以我有以下代码:

rang=np.linspace((0.8*Sclose), (1.2*Sclose), 100)
ts=[6, 5, 10, 15]
df=pd.DataFrame(index=rang, columns=list(ts))

给出:

In[138]: df.head()
Out[138]:
6.0 5.0 10.0 15.0
209.040000 NaN NaN NaN NaN
210.095758 NaN NaN NaN NaN
211.151515 NaN NaN NaN NaN
212.207273 NaN NaN NaN NaN
213.263030 NaN NaN NaN NaN

这就是我想要的。接下来我想做的是通过将列名和此时的索引解析为将返回值的方法来填充列。

def method1(x, y): 
return (x+y), (x*y)

for x, y in list(ts), range(len(df.index)):
df[x][y]=method1(x, df.index[y])[0]

但这不起作用。另请注意,ts 中的长度和值在我运行代码的大多数时候都会有所不同,因此它需要足够灵活才能处理该问题。这就是为什么我尝试了我所做的循环。

最佳答案

更新:

In [294]: def method1(x, y):
...: return x + 10*y
...:

In [295]: from itertools import product

In [296]: data = np.array([method1(x, y) for x,y in product(df.index, df.columns)]) \
.reshape(df.shape)

In [297]: pd.DataFrame(data, df.index, df.columns)
Out[297]:
6.0 5.0 10.0 15.0
209.040000 269.040000 259.040000 309.040000 359.040000
210.095758 270.095758 260.095758 310.095758 360.095758
211.151515 271.151515 261.151515 311.151515 361.151515
212.207273 272.207273 262.207273 312.207273 362.207273
213.263030 273.263030 263.263030 313.263030 363.263030
<小时/>

旧答案:

使用np.add.outer() .

演示:

In [257]: df
Out[257]:
6.0 5.0 10.0 15.0
209.040000 NaN NaN NaN NaN
210.095758 NaN NaN NaN NaN
211.151515 NaN NaN NaN NaN
212.207273 NaN NaN NaN NaN
213.263030 NaN NaN NaN NaN

In [258]: df = pd.DataFrame(np.add.outer(df.index, df.columns), df.index, df.columns)

In [259]: df
Out[259]:
6.0 5.0 10.0 15.0
209.040000 215.040000 214.040000 219.040000 224.040000
210.095758 216.095758 215.095758 220.095758 225.095758
211.151515 217.151515 216.151515 221.151515 226.151515
212.207273 218.207273 217.207273 222.207273 227.207273
213.263030 219.263030 218.263030 223.263030 228.263030

注意:此解决方案假定 df.indexdf.columns 都是数字数据类型。如果不是这种情况,请事先将它们转换为数字数据类型。

关于python - 使用以数字数组命名的列迭代 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48511607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com