我是 python 的新手,使用 Pandas 包 (python3.6) 中的 Dataframe。
我像下面的代码一样设置它,
df = DataFrame({'list1': list1, 'list2': list2, 'list3': list3, 'list4': list4, 'list5': list5, 'list6': list6})
它给出了类似
ValueError: arrays must all be same length
的错误所以我检查了数组的所有长度,
list1
& list2
比其他列表多1个数据。如果我想使用 list3
将 1 个数据添加到其他 4 个列表( list4
、 list5
、 list6
、 pd.resample
),那么我应该如何编写代码...?此外,这些列表是 1 分钟的时间序列列表。
有人有想法或帮助我吗?
提前致谢。
编辑
所以我改变了 EdChum 所说的。
并在前面添加了时间表。就像下面一样。
2017-04-01 0:00 895.87 730 12.8 4 19.1 380
2017-04-01 0:01 894.4 730 12.8 4 19.1 380
2017-04-01 0:02 893.08 730 12.8 4 19.3 380
2017-04-01 0:03 890.41 730 12.8 4 19.7 380
2017-04-01 0:04 889.28 730 12.8 4 19.93 380
我输入了类似的代码
df.resample('1min', how='mean', fill_method='pad')
它给了我这个错误:
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'RangeIndex'
最佳答案
我只是为每个列表构建一个 Series
然后 concat
它们全部:
In [38]:
l1 = list('abc')
l2 = [1,2,3,4]
s1 = pd.Series(l1, name='list1')
s2 = pd.Series(l2, name='list2')
df = pd.concat([s1,s2], axis=1)
df
Out[38]:
list1 list2
0 a 1
1 b 2
2 c 3
3 NaN 4
由于您可以为
name
构造函数传递 Series
arg,它会命名 df 中的每一列,此外,它还会将 NaN
放置在列长度不匹配的位置resample
指的是当您有一个 DatetimeIndex
时,您想要根据某个时间段对其进行 rebase 或调整长度,这不是您在这里想要的。你想要 reindex
,我认为这是不必要的和凌乱的:In [40]:
l1 = list('abc')
l2 = [1,2,3,4]
s1 = pd.Series(l1)
s2 = pd.Series(l2)
df = pd.DataFrame({'list1':s1.reindex(s2.index), 'list2':s2})
df
Out[40]:
list1 list2
0 a 1
1 b 2
2 c 3
3 NaN 4
在这里,您需要知道最长的长度,然后使用该索引对所有系列进行
reindex
,如果您只是 concat
,它将自动调整长度并使用 NaN
填充缺失的元素