[英]How to Concat Dataframe Pandas and Convert it into Multidimensional List on Python
[英]Python: multidimensional pandas DataFrame
这是我的第一个问题。
我有很多组数据。 它们中的每一个都应该以 DataFrame 的形式呈现。 我试图通过将 DataFrame 作为多维元组的一项来实现这一点,例如:
data[0][1].Glucose.val
data[0][1].Glucose.time
我已经像这样预定义了元组:
data = tuple([data_type for _ in range(3)] for _ in range(8))
解决这个问题很好,但如果我尝试用新值填充 df,元组中的所有元素都会被覆盖:
for condition in range(8):
for index in range(3):
loop_it = condition + row_mult * index
exp_setting = expIDs[loop_it]
tempval = pd.read_csv(f"raw_data/{exp_setting}_Glucose.csv", delimiter="\t")
rundata[condition][index].DOT.val = tempval.val.values
rundata[condition][index].DOT.time = tempval.t
我到底做错了什么?
谢谢
元组是不可变的,因此您不能在不覆盖整个元组的情况下替换单个项目。 您可以改用 DataFrame 列表。
如果您的 DataFrame 都具有相同的形状,并且所有值都是数字,您还可以对所有数据仅使用一个多维 NumPy 数组,例如:
import numpy as np
data = np.array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])
# replace the first item in the second row of the first frame with 9
data[0, 1, 0] = 9
print(data)
[[[1 2]
[9 4]]
[[5 6]
[7 8]]]
顺便说一句,pandas 在早期版本中确实有用于 3 维和 4 维 DataFrame 的特殊数据结构,但我想它们被发现是不必要的。 也许您可以将数据堆叠成一个二维的DataFrame。 为此,您可能需要查看 pandas 的 MultiIndex 功能。
如此处所述: 多维类列表 - 覆盖问题
问题是,我错过了正确初始化 class。
错误的:
data = tuple([data_type for _ in range(3)] for _ in range(8))
正确的:
data = tuple([data_type() for _ in range(3)] for _ in range(8))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.