2016-07-22 63 views
2

我有一个名称列表和一个numpy数组,分别如下。我怎么可以将这两个组合成一个熊猫DataFrame? (我的实际问题比这个大,因为我有超过700个列名和数组中的数十万个输入)。你的帮助对我来说非常宝贵。谢谢。如何通过组合列名和numpy数组来创建pandas DataFrame,然后添加更多的列?

column_names = [u'Bars', u'Burgers', u'Dry Cleaning & Laundry', u'Eyewear & Opticians', u'Local Services', u'Restaurants', u'Shopping'] 

values = array([[1, 1, 0, 0, 0, 0, 0], 
    [0, 0, 1, 0, 1, 0, 0], 
    [0, 0, 0, 1, 0, 0, 1], 
    [0, 0, 0, 0, 0, 1, 0]], dtype=int64) 

UPDATE

非常感谢您的快速输入。对不起,我没有完全解释我想达到的最终目标 - 我想在熊猫数据框中添加另一列score,这是一个列表[4, 4.5, 5, 5.5, 3]。然后,我想提取除score之外的所有列作为预测值,以在线性回归模型中预测score。我认为这里的重要部分是如何以有效的方式添加新列?我知道我可以做

data = pd.DataFrame({"Bars": Bars, "Burgers": Burgers, "Dry Clearning & Laundry": Dry Cleaning & Laundry, ..."score": score}) 

但是,这似乎不太可能做,因为我有太多的列。我也使用dd = pd.DataFrame(values, columns=column_names)ddd = pd.DataFrame(dd, scores)

这产生了:

Out[185]: 
Bars Burgers Dry Cleaning & Laundry Eyewear & Opticians Local Services \ 
3 0.0  0.0      0.0     0.0    0.0 
5 NaN  NaN      NaN     NaN    NaN 
5 NaN  NaN      NaN     NaN    NaN 
4 NaN  NaN      NaN     NaN    NaN 

Restaurants Shopping 
3   1.0  0.0 
5   NaN  NaN 
5   NaN  NaN 
4   NaN  NaN` 

再次非常感谢你!

+0

[创建包含多种类型的numpy数组的Pandas DataFrame的可能的重复](http://stackoverflow.com/questions/21647054/creating-a-pandas-dataframe-with-a-numpy-array-containing-多种类型) – shivsn

回答

2
import pandas as pd 
import numpy as np 

column_names = [u'Bars', u'Burgers', u'Dry Cleaning & Laundry', u'Eyewear & Opticians', u'Local Services', u'Restaurants', u'Shopping'] 

values = array([[1, 1, 0, 0, 0, 0, 0], 
[0, 0, 1, 0, 1, 0, 0], 
[0, 0, 0, 1, 0, 0, 1], 
[0, 0, 0, 0, 0, 1, 0]], dtype=int64) 

df = pd.DataFrame(data=values, columns=column_names) 

df.loc[:,'Scores'] = pd.Series(score, index=df.index) 
0

我想我想通了。我可以让分数变成另一个数据框。然后连接第一个数据帧dd = pd.DataFrame(values, columns=column_names)与第二个数据帧scores

pd.concat([dd, scores], axis=1) 

这可以生成新的数据帧。

相关问题