gpt4 book ai didi

python - Pandas 列上丢失的元数据

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

我正在处理时间序列数据,并尝试根据该时间序列的原始采样频率(或其他相关元数据)来限定各种时间序列上的操作。我可以使用以下命令成功设置元数据:

a_df._metadata = ["orig_freq"]
a_df["a_col"].orig_freq = "D"

这似乎是成功的。现在我想应用基于元数据标准的函数:

for i in a_df.columns:
if a_df[i].orig_freq == "D":
a_df[i + "_a_new_col"] = a_function(a_df[i])
else:
a_df[i + "_a_new_col"] = a_function_2(a_df[i])

这适用于数据框中的第一列,但在该列上成功操作后,我收到以下错误:

AttributeError: 'Series' object has no attribute 'orig_freq'

此时,所有分配的元数据已被删除。我在元数据分配中做错了什么吗?

最佳答案

我认为需要在类上定义_metadata(即Series._metadata),尽管即使这样,也可能存在一些问题。例如,请参阅此 issue进行更多讨论。

如果每一列都有一个元数据,那么使用 MultiIndex 列来存储它可能会更轻松。例如,像这样:

In [43]: df = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6]})

In [44]: orig_freqs = {'a': 'D', 'b': 'Q'}

In [45]: df.columns = pd.MultiIndex.from_tuples(([(c, orig_freqs[c]) for c in df]))

In [46]: df
Out[46]:
a b
D Q
0 1 4
1 2 5
2 3 6

In [47]: for (col, orig_freq) in df:
...: df[('new_col', orig_freq)] = a_function(df[(col, orig_freq)])

关于python - Pandas 列上丢失的元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32280286/

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