Python 3.x 在表中插入新列
在格式化和分组我的数据帧之后,我创建了以下pivot_表,其中显示了给定凭证的M和F的数量计数:Python 3.x 在表中插入新列,python-3.x,pandas,Python 3.x,Pandas,在格式化和分组我的数据帧之后,我创建了以下pivot_表,其中显示了给定凭证的M和F的数量计数: Gender F M Credential AA 105.0 117.0 AU 870.0 249.0 CNA 6309.0 5276.0 接下来我想做的是插入另一列,对于给定的凭证,该列的比率为F:M。例如: Gender
Gender F M
Credential
AA 105.0 117.0
AU 870.0 249.0
CNA 6309.0 5276.0
接下来我想做的是插入另一列,对于给定的凭证,该列的比率为F:M。例如:
Gender F M Ratio
Credential
AA 105.0 117.0 0.8974
AU 870.0 249.0 3.4939
CNA 6309.0 5276.0 1.1957
我遇到了一个问题,新专栏无法添加,因为它还不是一个类别
TypeError: cannot insert an item into a CategoricalIndex that is not already an existing category
我相信这是有道理的,因为没有一个叫做“比率”的“性别”,这不是我想要的。有人有什么建议吗?我认为这很简单:
df["Ratio"] = df["F"] / df["M"]
但显然不是
编辑:
如果没有向原始数据帧输入新列,可能是从原始数据帧提取数据并使用该比率列创建新数据帧
编辑2:
以下是复制的步骤:
df = pd.DataFrame({
'Credential': np.random.choice(['AA', 'AU', 'CNA'], 100),
'Gender': np.random.choice(['F', 'M'], 100),
'Counts': np.random.randn(100)
})
df['Gender'] = df['Gender'].astype('category')
dfNew = pd.pivot_table(df, values='Counts', index='Credential', columns="Gender")
dfNew["Ratio"] = dfNew["F"] / dfNew["M"]
EDIT3(解决方案代码):
以下是解决此错误的步骤:
df = pd.DataFrame({
'Credential': np.random.choice(['AA', 'AU', 'CNA'], 100),
'Gender': np.random.choice(['F', 'M'], 100),
'Counts': np.random.randn(100)
})
df['Gender'] = df['Gender'].astype('category')
dfNew = pd.pivot_table(df, values='Counts', index='Credential', columns="Gender")
# Changing from categoricals
dfNew.columns = dfNew.columns.tolist()
dfNew["Ratio"] = dfNew["F"] / dfNew["M"]
这对我来说似乎很管用。如何创建透视表?您是否将其分配回df?您排除了此处所需的几乎所有代码。亲爱的ayhan,我已经编辑了我的帖子,以包含用于生成透视表的代码。您确定是这一行产生了错误吗<代码>df[“比率”]=df[“F”]/df[“M”]?这是我复制的尝试:是的。编辑该行输出会将数据帧打印两次,没有任何错误。这可能是一个错误。你的熊猫版本是什么<代码>打印(pd.\uuuuu版本)