将列类型定义为' list'在熊猫

时间:2016-05-10 09:38:12

标签: python list pandas

我有一个pandas数据框df。我希望df由3列组成:第一列是品牌名称(字符串),第二列是整数列表,第三列是浮点列表。因此,对于每个品牌,我有两个列表,我想将它们全部放在数据框中,以便根据品牌名称轻松访问不同的列表。

我有:

CONSTRAINT [FK_T_Stanje_T_Artikli] 
FOREIGN KEY ([ArtiklId]) 
REFERENCES [dbo].[T_Artikli] ([ArtikliId])

并将计数列表放入'计数'列对应于' Nike'我试过以下内容:

count = [1,5,198,0,0,35]
brand = 'Nike'

这些都不起作用,我得到df[df['brand']==brand].loc[0,'count'] = count df[df['brand']==brand]['count'] == count df[df['brand']==brand]['count'].loc[0] == count ValueError: Must have equal len keys and value when setting with an iterable并且df没有任何变化。

如何将列表写入pandas数据框单元?

3 个答案:

答案 0 :(得分:3)

在我看来,您正在构建错误的数据模型。 该模型不是第一范式(1NF),使用它会有很多麻烦。 请尝试使用标准化模型。

   Brand     price
0  Nike     50.0
1  Nike     60.0
2  Nike     70.0
3  Puma     30.0
4  Puma     100.0

您可以轻松地从此模型中获取任何计算值。

答案 1 :(得分:1)

您可以将品牌用作列名:

import pandas as pd

df = pd.DataFrame({'Nike' : [[1,5,198,0,0,35],[0.5,0.3,0.2]]},index = ['count','floats'])

然后你可以添加这样的新品牌:

df['Puma'] = [[1,2,3],[0.1,0.2]]

您将获得此数据框:

        Nike                    Puma
count   [1, 5, 198, 0, 0, 35]   [1, 2, 3]
float   [0.5, 0.3, 0.2]         [0.1, 0.2]

然后访问这些值非常简单。

答案 2 :(得分:0)

您可以像这样创建它。类型将为object

In [254]: df=pd.DataFrame({'Brand':['Nike','Puma'],
'count':[[1,2,3],[0,0]],'price':[[50.]*3,[100.]*2]})

In [255]: df
Out[255]: 
  Brand      count               price
0  Nike  [1, 2, 3]  [50.0, 50.0, 50.0]
1  Puma     [0, 0]      [100.0, 100.0]