我想用一系列计算的非平凡数填充可变长度的列,以便它可以匹配数据帧列中的一组数据。结果将是一个数据帧两列宽,一些大数字长(这里是20行长)。我知道如何计算这个系列:
while p < 20:
r = p * 9890
d.append(r)
p +=1
但它会产生一个“水平”字符串:
print(d)
[0,9890,19780,29670,39560,49450,59340,69230,79120,89010,98900,108790,118680,128570,138460,148350,158240,168130,178020,187910]
如何将其设为“垂直”列?
答案 0 :(得分:0)
嗯,你最初建立一个vanilla python列表,当然它没有行或列的概念,因为它本身就是1D。虽然我不熟悉pandas,假设它使用numpy数组,你可以执行以下操作:
d = numpy.array(d) #convert to a numpy array
d = d[numpy.newaxis] #convert from 1D to 2D
d = d.T #transpose to make a "column"
或者在一行中:
d = numpy.array(d)[numpy.newaxis].T
答案 1 :(得分:0)
使用python和pandas
df ['new'] = df ['datatoiterateover']。apply(function x:x)将把所有数据放在一个新列中。
答案 2 :(得分:0)
>>> import pandas as pd
>>> d = []
>>> for i in range(20):
... d.append(i * 9890)
...
>>> df = pd.DataFrame({'column_header': d})
>>> df.head()
column_header
0 0
1 9890
2 19780
3 29670
4 39560
>>>
答案 3 :(得分:0)
numpy
可以非常干净地创建数组,可以直接分配到pandas.DataFrame
列,也可以与现有DataFrame
中的列进行比较。它
import numpy as np
...
d = np.arange(20)*980
您可以将d
直接与DataFrame
列进行比较,而不必关注其“方向”垂直或水平。
答案 4 :(得分:0)
使用numpy.arrays
并切片:
a = np.array([0, 9890, 19780, 29670, 39560, 49450, 59340, 69230, 79120, 89010, 98900, 108790, 118680, 128570, 138460, 148350, 158240, 168130, 178020, 187910])
In [3]: a[:,None]
Out[3]:
array([[ 0],
[ 9890],
[ 19780],
[ 29670],
[ 39560],
[ 49450],
[ 59340],
[ 69230],
[ 79120],
[ 89010],
[ 98900],
[108790],
[118680],
[128570],
[138460],
[148350],
[158240],
[168130],
[178020],
[187910]])
答案 5 :(得分:0)
from numpy import *
d=[]
p=0
while p < 20:
r = p * 9890
d.append(r)
p +=1
result=array(d).reshape(20,1)