【发布时间】:2017-09-05 07:20:17
【问题描述】:
我是 python pandas 的新手。只是一个快速而简单的问题。假设我有两列,分别是“weeks”和“machine”:
weeks = [1,3,5]
machine = [M1, M1, M2, M2]
我的计划是将这些列表放在 DataFrame 中,但我得到“ValueError:数组必须都是相同的长度”。我正在查看以下输出:
final_weeks = [1,2,3,4,5,1,2,3,4,5]
final_machine = [M1, M1, M1, M1, M1, M2, M2, M2, M2, M2]
tempDict = {'weeks': final_weeks, 'machine': final_machine}
我得到了这两个列表,但没有得到数据框。为什么我会收到 valueError?这是我到目前为止所做的:
maxWeek = df["weeks"].max()
uniqueMachine = set(df.machine)
unionWeeklist = [item for item in range(1, maxWeek+1)]
# Output = [1, 2, 3, 4, 5]
final_weeks = unionWeekList * len(uniqueMachine)
# [1,2,3,4,5,1,2,3,4,5]
machines = [[item]* maxWeek for item in uniqueMachine]
# Output: [[M1,M1,M1,M1,M1], [M2,M2,M2,M2,M2]]
final_machines = list(itertools.chain.from_iterable(machines))
# Flattened list = [M1,M1,M1,M1,M1,M2,M2,M2,M2,M2]
tmpDict = {'week': final_weeks, 'machine': final_machines}
# new dataframe
newdf = pd.DataFrame.from_records(tmpDict)
# ValueError: arrays must all be same length
【问题讨论】:
-
你能打印
len(final_weeks)和len(final_machines) -
它的记录数相同,没有问题。
-
好的,我更新了。