NumPy优于常规Python列表有什么优势?
我有大约100个金融市场系列,我打算创建一个100x100x100 = 100万个单元的立方体阵列.我将使用每个y和z对每个x进行回归(3变量),以使用标准错误填充数组.
我听说过,对于"大型矩阵",出于性能和可伸缩性的原因,我应该使用NumPy而不是Python列表.事实是,我知道Python列表,它们似乎对我有用.
如果我搬到NumPy,会有什么好处?
如果我有1000个系列(即立方体中有10亿个浮点单元)怎么办?
我有一个由列表列表组成的Numpy数组,表示带有行标签和列名的二维数组,如下所示:
data = array([['','Col1','Col2'],['Row1',1,2],['Row2',3,4]])
Run Code Online (Sandbox Code Playgroud)
我希望生成的DataFrame将Row1和Row2作为索引值,将Col1,Col2作为标题值
我可以指定索引如下:
df = pd.DataFrame(data,index=data[:,0]),
Run Code Online (Sandbox Code Playgroud)
但我不确定如何最好地分配列标题.
我有一个列表'abc'和一个数据帧'df':
abc = ['foo', 'bar']
df =
A B
0 12 NaN
1 23 NaN
Run Code Online (Sandbox Code Playgroud)
我想将列表插入单元格1B,所以我想要这个结果:
A B
0 12 NaN
1 23 ['foo', 'bar']
Run Code Online (Sandbox Code Playgroud)
我可以这样做吗?
1)如果我使用这个:
df.ix[1,'B'] = abc
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
ValueError: Must have equal len keys and value when setting with an iterable
Run Code Online (Sandbox Code Playgroud)
因为它试图将列表(有两个元素)插入行/列但不插入单元格.
2)如果我使用这个:
df.ix[1,'B'] = [abc]
Run Code Online (Sandbox Code Playgroud)
然后它插入一个只有一个元素是'abc'列表([['foo', 'bar']])的列表.
3)如果我使用这个:
df.ix[1,'B'] = ', '.join(abc)
Run Code Online (Sandbox Code Playgroud)
然后它插入一个字符串:( foo, bar)但不是列表.
4)如果我使用这个:
df.ix[1,'B'] = [', '.join(abc)]
Run Code Online (Sandbox Code Playgroud)
然后它插入一个列表,但它只有一个元素(['foo, bar'])但不是我想要的两个(['foo', 'bar']).
感谢帮助!
我的新数据框和旧列表:
abc = ['foo', …Run Code Online (Sandbox Code Playgroud) 我有一个参考清单
ref = ['September', 'August', 'July', 'June', 'May', 'April', 'March']
Run Code Online (Sandbox Code Playgroud)
还有一个数据框
df = pd.DataFrame({'Month_List': [['July'], ['August'], ['July', 'June'], ['May', 'April', 'March']]})
df
Month_List
0 [July]
1 [August]
2 [July, June]
3 [May, April, March]
Run Code Online (Sandbox Code Playgroud)
我想检查引用列表中的哪些元素存在于每一行中,然后转换为二进制列表
我可以使用 apply
def convert_month_to_binary(ref,lst):
s = pd.Series(ref)
return s.isin(lst).astype(int).tolist()
df['Binary_Month_List'] = df['Month_List'].apply(lambda x: convert_month_to_binary(ref, x))
df
Month_List Binary_Month_List
0 [July] [0, 0, 1, 0, 0, 0, 0]
1 [August] [0, 1, 0, 0, 0, 0, 0]
2 [July, June] [0, 0, 1, 1, 0, 0, …Run Code Online (Sandbox Code Playgroud) 我想将单元格值设置为列表.比如说:
df.loc['a']['b'] = ['one', 'two', 'three']
Run Code Online (Sandbox Code Playgroud)
但是,我无法这样做,因为我收到以下错误:
ValueError: Must have equal len keys and value when setting with an iterable
Run Code Online (Sandbox Code Playgroud)
我的数据框目前只是全零并且是nxn.有没有办法能够设置单元格值,这样当我执行时df.loc['a']['b'],我会回来['one', 'two', 'three'].
我有一个数据框和一个列表
df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6]})
mylist= [10,20,30,40,50]
Run Code Online (Sandbox Code Playgroud)
我希望在数据帧的每一行中都有一个列表作为元素.如果我喜欢这里,
df['C'] = mylist
Run Code Online (Sandbox Code Playgroud)
Pandas试图每行播放一个值,所以我得到一个错误Length of values does not match length of index.
A B C
0 1 4 [10,20,40,50]
1 2 5 [10,20,40,50]
2 3 6 [10,20,40,50]
Run Code Online (Sandbox Code Playgroud)