Python 列上的元数据丢失
我正在处理时间序列数据,并试图根据该时间序列的原始采样频率(或其他相关元数据)对各种时间序列上的操作进行限定。我可以通过以下操作成功设置元数据:Python 列上的元数据丢失,python,pandas,metadata,time-series,Python,Pandas,Metadata,Time Series,我正在处理时间序列数据,并试图根据该时间序列的原始采样频率(或其他相关元数据)对各种时间序列上的操作进行限定。我可以通过以下操作成功设置元数据: 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
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'
此时,已删除所有分配的元数据。我在元数据分配中做错了什么吗 我认为需要在类上定义
\u元数据
(即系列.\u元数据
),尽管即使这样,也可能存在一些问题。例如,更多讨论请参见此
如果每一列都有一段元数据,那么使用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)])
它不应该是
i.orig\u freq
?元数据应该是特定于每一列的,它代表一个不同的时间序列。整个数据帧已被标准化为单个采样频率,但我希望保留每个包含列的单个原始采样频率的信息。谢谢太好了,谢谢。是的,我认为为类定义元数据会有问题。