gpt4 book ai didi

python - 迭代时无法修改 Pandas DataFrame

转载 作者:行者123 更新时间:2023-12-01 01:31:31 25 4
gpt4 key购买 nike

我的问题是关于下面的 FOR 循环,我看到 Kaggle 上的著名数据科学家正在使用它。但它似乎不适合我。

Python 3.66。 Pandas 0.23.4

设置

train = pd.DataFrame({'id': [2, 3, 1], 'time':['2017-04-17 22:23:22', '2018-05-22 14:20:00', '2017-01-09 08:02:14']})
test = pd.DataFrame({'id': [2, 3, 1], 'time':['2017-04-17 22:23:22', '2018-05-22 14:20:00', '2017-01-09 08:02:14']})
train

>>> id time
>>> 0 2 2017-04-17 22:23:22
>>> 1 3 2018-05-22 14:20:00
>>> 2 1 2017-01-09 08:02:14

排序(有效)

train.sort_values('time', ascending=True)

>>> id time
>>> 2 1 2017-01-09 08:02:14
>>> 0 2 2017-04-17 22:23:22
>>> 1 3 2018-05-22 14:20:00

在 FOR 循环中对其进行排序 - 为什么这不起作用?

for data in [train, test]:
data = data.sort_values('time', ascending=True)
train

>>> id time
>>> 0 2 2017-04-17 22:23:22
>>> 1 3 2018-05-22 14:20:00
>>> 2 1 2017-01-09 08:02:14

最佳答案

Sort it in a FOR loop - why does this not work?

因为您的 for 循环不会将新定义的变量 data 绑定(bind)到 [train, test] 中的对象。您将在每个循环中重新定义 data,而不更改 traintest

相反,您可以使用序列解包:

train, test = (df.sort_values('time') for df in (train, test))

或者,在 for 循环中使用 enumerate:

data = [train, test]
for idx, df in enumerate(data):
data[idx] = df.sort_values('time')

然后通过索引引用您的数据帧,即data[0]data[1]

或者,使用字典并迭代项目:

data = {'train': train, 'test': test}

for key, df in d.items():
data[key] = df.sort_values('time')

然后通过键引用您的数据帧,即data['train']data['test']

关于python - 迭代时无法修改 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52815828/

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