我需要在从数据框(“分组”)构建的组中构建选定值的dict。 idcolumn是一个字符串[“column_name”]的列表(我把它作为一个列表,因为在某些时候,我需要为使用标签的操作添加各种其他字符串/列名称。)
所以我用它作为一个意思来检索这个语句的组:
grouped.get_group(k).loc[:,idcolumn]
与
完全相同grouped.get_group(k).loc[:,idcolumn[0]]
以[“column_name”]作为标题输出所选数据的数据帧。
我的完整表达是:
dict_to_build= {k: list(grouped.get_group(k).loc[:,idcolumn]) for k in grouped.groups.keys() }
但我有一个非常奇怪的错误 构建的dict包含所有键,但作为唯一值“column_name”。 如果我使用
dict_to_build= {k: list(grouped.get_group(k).loc[:,idcolumn[0]) for k in grouped.groups.keys() }
dict完全没问题。
如下所示:
In [115]: pde=pd.DataFrame({"a":[1,2,3,1,2,3], "column_name":["a","b","c","d","e","f"]})
In [116]: pde
Out[116]:
a column_name
0 1 a
1 2 b
2 3 c
3 1 d
4 2 e
5 3 f
In [117]: grouped=pde.groupby[1]
Traceback (most recent call last):
File "<ipython-input-117-b504dadfee12>", line 1, in <module>
grouped=pde.groupby[1]
TypeError: 'method' object is not subscriptable
In [118]: grouped=pde.groupby("a")
In [119]: grouped.get_group(1).loc[:,"column_name"]
Out[119]:
0 a
3 d
Name: column_name, dtype: object
In [120]: list(grouped.get_group(1).loc[:,"column_name"])
Out[120]: ['a', 'd']
In [121]: list(grouped.get_group(1).loc[:,["column_name"]])
Out[121]: ['column_name']
有人可以告诉我发生了什么事吗?这对我来说绝对奇怪。问题来自数据框架,带有列表作为参数的loc,还是列表函数?
答案 0 :(得分:1)
我认为原因是
grouped.get_group(1).loc[:,"column_name"]
返回系列
grouped.get_group(1).loc[:,["column_name"]]
返回一个Dataframe。
当您执行列表(系列)时,它返回系列的值,而当您执行列表(Dataframe)时,它返回df的列,在本例中为“column_name”。