gpt4 book ai didi

python - for 循环中的 pandas set_index

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

我有很多大约这种类型的 DataFrame:

import pandas as pd
import numpy as np

x1 = pd.DataFrame(np.vstack((np.random.random((3, 25)),np.arange(1,26))).T, columns = ['a', 'b', 'c', 'timestamp'])
x2 = pd.DataFrame(np.vstack((np.random.random((3, 25)),np.arange(1,26))).T, columns = ['a', 'b', 'c', 'timestamp'])
x3 = pd.DataFrame(np.vstack((np.random.random((3, 25)),np.arange(1,26))).T, columns = ['a', 'b', 'c', 'timestamp'])

如果我无法在创建 DataFrame 时设置索引,我想使用 for 循环将时间戳列一次更改为所有 DataFrame 的索引,例如:

for x in [x1, x2, x3]:
x = x.set_index(['timestamp'])

但是当我调用 x1.head() 我回来了

          a         b         c  timestamp
0 0.896372 0.320966 0.601483 1.0
1 0.041191 0.398337 0.778510 2.0
2 0.807218 0.891364 0.044076 3.0
3 0.604762 0.814592 0.731940 4.0
4 0.453155 0.122674 0.287158 5.0

我是不是误用了 set_index() 或误解了 x1、x2 和 x3 在循环中是如何分配给 x 的?

最佳答案

你可以设置索引inplace,当你遍历列表时,x只是一个临时变量,与x1共享相同的数据>, x2 and x3, 将一个新的数据框赋给一个临时变量不会改变原来的数据框,你必须就地修改数据:

for x in [x1, x2, x3]:
x.set_index(['timestamp'], inplace=True)

enter image description here


在不修改原始数据框的情况下获取所需数据框列表的另一种方法是使用列表理解:

[x.set_index(['timestamp']) for x in [x1, x2, x3]]

关于python - for 循环中的 pandas set_index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41625235/

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