Pandas将元组转换为列,然后插入行中



我试图基于一行获取前14天的数据,并将每个值添加到它自己的列中。我已经编写了代码,将检索这些数据并将其作为元组列表返回。我在将这个元组列表转换为它们自己的列时遇到了问题。

我已经包含了一些伪数据和有问题的函数row'是RetrievePreviousData的输出,这将是我的主数据帧中每一行的输出。

row = [(0, '9.3', '0'), (1, '10.7', '0.4'), (2, '10.9', '7.4'), (3, '8.9', '4.8'), (4, '12.2', '7.4'), (5, '11.5', '2.6'), (6, '9.7', '7.4'), (7, '7.6', '7.4'), (8, '8', '5.4'), (9, '10', '0'), (10, '13.1', '5.8'), (11, '7.9', '9.8'), (12, '8.5', '9.8'), (13, '6.7', '13')]
def RetrievePreviousData(name, date):
dataList = []
max_days = 14
for i in range(max_days):

data_test0 = RetrieveData(name, date-datetime.timedelta(days=i), True) 
data_test1 = RetrieveData(name, date-datetime.timedelta(days=i), False)
dataList.append((i, data_test0, data_test1))

return dataList

应用pd.Series将数组的每个元素放入一列中,但我希望元组的元素位于它们自己的列中,第一个元素用于命名以下元素的列。预期输出为:

0 Test0 | 0 Test1| 1 Test0 | 1 Test1 | etc
9.3     | 0      | 10.7    | 0.4     | etc

编辑:

这是我的责任,但目的是将这些列返回到行中,而不是生成一个新的数据帧。

嗨,您可以直接将元组转换为panda数据帧。

import pandas as pd
row = [(0, '9.3', '0'), (1, '10.7', '0.4'), (2, '10.9', '7.4'), (3, '8.9', '4.8'), (4, '12.2', '7.4'), (5, '11.5', '2.6'), (6, '9.7', '7.4'), (7, '7.6', '7.4'), (8, '8', '5.4'), (9, '10', '0'), (10, '13.1', '5.8'), (11, '7.9', '9.8'), (12, '8.5', '9.8'), (13, '6.7', '13')]
df = pd.DataFrame(row, columns=['Col 1', 'Col 2', 'Col 3'])

我成功地获得了所需的输出:

names = ['Test0', 'Test1']
def GetListTupleValue(listIndex, tupleIndex, tupleToGet):
print(tupleToGet[listIndex][tupleIndex])
return tupleToGet[listIndex][tupleIndex]
for i in range(max_days):
for j in range(len(names)):
name = str(i) + ' Prev ' + names[j]
df[name] = [GetListTupleValue(i,j+1, x) for x in df[col]]

如果有人能想出一种更像蟒蛇的方式来做这件事,请作为我的客人,但这对我来说很有效

最新更新