pandas - 根据其他列值估算值

标签 pandas

有一个以下格式的数据框(df):

Name,   Col-1,  Col-2, Col-3, Col-4
abc,    0,      1,      0,      0
cba,    1,      0,      0,      0
bns     1,      0,      0,      0
abd     0       0,      0,      1

现在我尝试向此数据框添加新列,如下所示:

Name,   Col-1,  Col-2, Col-3, Col-4,    Type
abc,    0,      1,      0,      0,      Col-2
cba,    1,      0,      0,      0,      Col-1
bns     1,      0,      0,      0,      Col-1
abd     0       0,      0,      1,      Col-4

请建议如何完成它,我在下面尝试过但抛出错误。

df['Type'] = [lambda x: x if x == 1 for x in df.columns]

最佳答案

您可以使用idxmax :

In [11]: df
Out[11]:
  Name  Col-1  Col-2  Col-3  Col-4
0  abc      0      1      0      0
1  cba      1      0      0      0
2  bns      1      0      0      0
3  abd      0      0      0      1

In [12]: df.iloc[:, 1:]
Out[12]:
   Col-1  Col-2  Col-3  Col-4
0      0      1      0      0
1      1      0      0      0
2      1      0      0      0
3      0      0      0      1

In [13]: df.iloc[:, 1:].idxmax(axis=1)
Out[13]:
0    Col-2
1    Col-1
2    Col-1
3    Col-4
dtype: object

In [14]: df["Type"] = df.iloc[:, 1:].idxmax(axis=1)

In [15]: df
Out[15]:
  Name  Col-1  Col-2  Col-3  Col-4   Type
0  abc      0      1      0      0  Col-2
1  cba      1      0      0      0  Col-1
2  bns      1      0      0      0  Col-1
3  abd      0      0      0      1  Col-4

关于pandas - 根据其他列值估算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55523104/

相关文章:

python - Pandas 多索引 DataFrame 为每个索引添加子索引

python - 删除字符串中包含除 A、C、T、G、N 之外的其他字母的行

python - 如何使用 Pandas 系列作为另一个系列的查找

python - 使用 Pandas 重新格式化 Excel 文件

python - 如何根据字典键和值过滤 Pandas 数据框行?

python - 将 5D 数组转换为 Pandas 数据框的最有效方法

python - 使用 Dask 循环遍历 pd.Series

python - 水平条形图 : adjusting y axes label size

Python Pandas Dataframe 存储下一行值

python - 将 pandas 中的 2 列映射到第三列