gpt4 book ai didi

python - 使用 pandas.DataFrame 设置值

转载 作者:太空狗 更新时间:2023-10-29 21:08:18 25 4
gpt4 key购买 nike

拥有这个DataFrame:

import pandas

dates = pandas.date_range('2016-01-01', periods=5, freq='H')
s = pandas.Series([0, 1, 2, 3, 4], index=dates)
df = pandas.DataFrame([(1, 2, s, 8)], columns=['a', 'b', 'foo', 'bar'])
df.set_index(['a', 'b'], inplace=True)

df

enter image description here

我想用一个简单的旧系列替换那里的系列,但重新采样到一天的时间段(即 x.resample('D').sum().dropna() )。

当我尝试时:

df['foo'][0] = df['foo'][0].resample('D').sum().dropna()

这似乎工作得很好:

enter image description here

但是,我收到警告:

SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

问题是,我应该怎么做呢?

注意事项

我尝试过但不起作用的事情(重采样与否,分配引发异常):

df.iloc[0].loc['foo'] = df.iloc[0].loc['foo']
df.loc[(1, 2), 'foo'] = df.loc[(1, 2), 'foo']
df.loc[df.index[0], 'foo'] = df.loc[df.index[0], 'foo']

有关数据的更多信息(如果相关):

  • 真正的DataFrame在多索引中有更多的列。不一定都是整数,但更普遍的是数字和分类。索引是唯一的(即:只有一行具有给定的索引值)。
  • 当然,真正的 DataFrame 中有更多的行(数千行)。
  • DataFrame 中不一定只有两列,可能有不止 1 列包含 Series 类型。列通常还包含系列、分类数据和数值数据。任何单个列始终是单一类型的(数字、分类或系列)。
  • 每个单元格中包含的系列通常具有可变长度(即:DataFrame 中的两个系列/单元格不具有相同的长度,除非纯属巧合,并且可能永远不会具有相同的索引,因为日期因日期而异以及系列之间)。

使用 Python 3.5.1 和 Pandas 0.18.1。

最佳答案

这应该有效:

df.iat[0, df.columns.get_loc('foo')] = df['foo'][0].resample('D').sum().dropna()

Pandas 提示链式索引,但如果您不这样做,它就会面临将整个系列分配给单元格的问题。用iat你可以强制这样的事情。我认为这不是一件好事,但似乎是一个可行的解决方案。

关于python - 使用 pandas.DataFrame 设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37569881/

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