如何通过组合column_names列表和numpy数组创建一个pandas DataFrame,然后添加更多列?

时间:2016-07-22 15:27:01

标签: arrays numpy pandas

我有一个名单列表和一个numpy数组,如下所示。我如何将这两者组合成一个pandas DataFrame? (我的实际问题大于此,因为我在阵列中有超过700个列名和十万个输入)。你的帮助对我来说非常宝贵。谢谢。

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)

更新

非常感谢您的快速输入。很抱歉,我没有完全解释我想要实现的最终目标 - 我想在pandas数据框中添加另一列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`

再次非常感谢你!

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

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

这可以生成新的数据框。