Python从groupby生成的dataframe访问名为“True”或“False”的列

2024-04-25 23:10:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dataframe,它是通过执行groupby操作从另一个dataframe生成的,使用一个来自原始df的列和另一个从原始df的列再次生成的真/假向量。下面的代码应该复制这个

import pandas as pd
import numpy as np

df=pd.DataFrame({'group1': list('AABBCCAABBCC'),'group2':list('ZYYXYXXYZXYZ'),'group3':list('MMMNNNOOOMNO'),'group4':list('EFGGFEEFGGFE')})
df['check_for_A']=df['group1']=='A' #True/False vector
truth_table=df.groupby(['group1','check_for_A']).group2.count().unstack().fillna(0)
truth_table['random_values']=np.random.rand(3)

输出如下所示

^{pr2}$

我的问题是,虽然我可以通过键入truth_table['random_values']来访问列随机值,但我似乎无法访问True或{}列。命令truth_table['True']给出一个错误,抱怨名称TrueFalse也会发生同样的情况。我不知道为什么。在

我想问题出在真/假名字上,因为如果我这样做

truth_table=df.groupby(['group1','group2']).group2.count().unstack().fillna(0)

列名是xy和{},我在访问它时没有任何问题。在

如果有人能解释这一行为并提出其他解决方案,我将不胜感激。我正在考虑更改列名,但我想找出我遗漏了什么。在


Tags: importtruedataframedfcheckasnptable
1条回答
网友
1楼 · 发布于 2024-04-25 23:10:05

您可以使用不带引号的truth_table[True]和{}访问数据。如果你这么做的话,这一点就可以看出来了

print truth_table.columns
# Index([False, True, u'random_values'], dtype='object', name=u'check_for_A')

这种行为是因为df['check_for_A']中的值是布尔值而不是字符串。在

相关问题 更多 >