我有一个名单列表和一个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`
再次非常感谢你!
答案 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)
这可以生成新的数据框。