PyL*_*ner 6 python arrays numpy append pandas
我有一个数组列表(一维numpy数组)(a_)和一个列表(l_),并希望有一个DataFrame作为其列.它们看起来像这样:
a_: [array([381]), array([376]), array([402]), array([400])...]
l_: [1.5,2.34,4.22,...]
Run Code Online (Sandbox Code Playgroud)
我可以通过以下方式完成:
Run Code Online (Sandbox Code Playgroud)df_l = pd.DataFrame(l_) df_a = pd.DataFrame(a_) df = pd.concat([df_l, df_a], axis=1)
这样做的时间更短吗?我试着用pd.append:
Run Code Online (Sandbox Code Playgroud)df_l = pd.DataFrame(l_) df_l = df_l.append(a_)
但是,因为列索引都是0,所以它将a_添加到dataframe列的末尾,从而生成单个列.有这样的事情:
l_ = l_.append(a_).reset(columns)
为附加的数组设置新的列索引?好吧,显然这不起作用!
所需的输出如下:
Run Code Online (Sandbox Code Playgroud)0 0 0 1.50 381 1 2.34 376 2 4.22 402...
谢谢.
建议:
df_l = pd.DataFrame(l_)
df_1['a_'] = pd.Series(a_list, index=df_1.index)
Run Code Online (Sandbox Code Playgroud)
示例#1:
L = list(data)
A = list(data)
data_frame = pd.DataFrame(L)
data_frame['A'] = pd.Series(A, index=data_frame.index)
Run Code Online (Sandbox Code Playgroud)
示例#2 - 相同系列长度(创建系列和设置索引与现有数据框相同):
In [33]: L = list(item for item in range(10))
In [34]: A = list(item for item in range(10,20))
In [35]: data_frame = pd.DataFrame(L,columns=['L'])
In [36]: data_frame['A'] = pd.Series(A, index=data_frame.index)
In [37]: print data_frame
L A
0 0 10
1 1 11
2 2 12
3 3 13
4 4 14
5 5 15
6 6 16
7 7 17
8 8 18
9 9 19
Run Code Online (Sandbox Code Playgroud)
示例#3 - 不同的系列长度(创建系列并让pandas处理索引匹配):
In [45]: not_same_length = list(item for item in range(50,55))
In [46]: data_frame['nsl'] = pd.Series(not_same_length)
In [47]: print data_frame
L A nsl
0 0 10 50
1 1 11 51
2 2 12 52
3 3 13 53
4 4 14 54
5 5 15 NaN
6 6 16 NaN
7 7 17 NaN
8 8 18 NaN
9 9 19 NaN
Run Code Online (Sandbox Code Playgroud)
根据你的评论,看起来你想要加入你的列表列表.我假设它们在列表结构中,因为array()它不是python中的方法.为此,您将执行以下操作:
In [63]: A = [[381],[376], [402], [400]]
In [64]: A = [inner_item for item in A for inner_item in item]
In [65]: print A
[381, 376, 402, 400]
Run Code Online (Sandbox Code Playgroud)
然后使用新阵列创建Series并按照上述步骤添加到数据框中.
| 归档时间: |
|
| 查看次数: |
32750 次 |
| 最近记录: |