我有一个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数据框单元?
答案 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]