ValueError:使用pandas DataFrame在python中数组的长度必须相同

pau*_*111 4 resampling dataframe python-3.x pandas

我是 python 的新手,使用 Pandas 包 (python3.6) 中的 Dataframe。

我像下面的代码一样设置它,

df = DataFrame({'list1': list1, 'list2': list2, 'list3': list3, 'list4': list4, 'list5': list5, 'list6': list6})
Run Code Online (Sandbox Code Playgroud)

它给出了一个错误,如 ValueError: arrays must all be same length

所以,我检查阵列的所有长度,list1list2比其他列表(1点)更多的数据。如果我想使用 将 1 个数据添加到其他 4 个列表(list3, list4, list5, list6pd.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
Run Code Online (Sandbox Code Playgroud)

我输入了类似的代码

df.resample('1min', how='mean', fill_method='pad')
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误: TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'RangeIndex'

EdC*_*ica 10

我只是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
Run Code Online (Sandbox Code Playgroud)

由于您可以nameSeriesctor传递一个arg,它会命名 df 中的每一列,而且它将放置NaN列长度​​不匹配的位置

resample指的是当你有一个DatetimeIndex你想要根据某个时间段重新设定或调整长度时,这不是你想要的。你想要的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
Run Code Online (Sandbox Code Playgroud)

在这里,您需要知道最长的长度,然后reindex使用该索引的所有系列,如果您只是concat它会自动调整长度并用NaN