Python 3.x ValueError:在使用DataFrame的python中,数组的长度必须相同
我是python的新手,使用pandas包(python3.6)中的Dataframe 我按照下面的代码设置它Python 3.x ValueError:在使用DataFrame的python中,数组的长度必须相同,python-3.x,pandas,dataframe,resampling,Python 3.x,Pandas,Dataframe,Resampling,我是python的新手,使用pandas包(python3.6)中的Dataframe 我按照下面的代码设置它 df = DataFrame({'list1': list1, 'list2': list2, 'list3': list3, 'list4': list4, 'list5': list5, 'list6': list6}) 它给出了一个类似于ValueError的错误:数组的长度必须相同 所以我检查了所有数组的长度,list1&list2比其他列表多1个数据。如果我想通过使用pd.
df = DataFrame({'list1': list1, 'list2': list2, 'list3': list3, 'list4': list4, 'list5': list5, 'list6': list6})
它给出了一个类似于ValueError的错误:数组的长度必须相同
所以我检查了所有数组的长度,list1
&list2
比其他列表多1个数据。如果我想通过使用pd.resample
向其他4个列表(list3
,list4
,list5
,list6
)添加1个数据,那么我应该如何编写代码
此外,这些列表是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:只对DatetimeIndex、TimedeltaIndex或PeriodIndex有效,但是得到了一个“RangeIndex”的实例
我只需要为每个列表构造一个系列
,然后它们全部:
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
由于您可以为系列
ctor传递名称
arg,因此它将命名df中的每一列,并将NaN
放置在列长度不匹配的位置
resample
指的是当您有一个DatetimeIndex
时,您希望根据某个时间段重新设置基准或调整长度,而这个时间段不是您想要的。您想要重新编制索引,我认为这是不必要的,也是混乱的:
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
在这里,您需要知道最长的长度,然后使用该索引重新索引所有系列,如果您只是concat
,它将自动调整长度并用NaN
填充缺少的元素。根据,使用pd.resample()执行此操作看起来相当困难
:您应该计算一个频率,该频率只向df添加一个值,而该功能似乎真的不适用于此^^^(似乎允许轻松重塑,例如:1分钟到30秒或1小时)!你最好试试EdChum所做的:P