繁体   English   中英

Label 基于另一列(同一行)的值的列 pandas dataframe

[英]Label a column based on the value of another column (same row) in pandas dataframe

我有一个对应于特定类别的子类别列表,可以这样想:

类别子类别

一个 | 1个

一个 | 2个

一个 | 3个

乙 | 4个

乙 | 5个

ETC...

我想知道根据定义的子类别将类别值应用于 dataframe(~800,000 行)的每一行的最佳方法。

我目前正在使用这种方法,但我知道它不是最好的,甚至不是最好的:

df.loc[df.Subcategory =='1', 'Category'] = 'a'

df.loc[df.Subcategory =='2', 'Category'] = 'a'

df.loc[df.Subcategory =='3', 'Category'] = 'a' 

df.loc[df.Subcategory =='4', 'Category'] = 'b'
and so on...

这给我留下了一大堆丑陋的代码,而且效率不高。

我想知道是否有人有另一种方法可以提供帮助,我对编码还很陌生,所以这只是我编写的第 5 个左右的代码,而且大部分都是自学的,因此非常感谢任何帮助。

根据您的代码,您似乎有一个名为“子类别”的 DataFrame 列,并且您希望基于子类别到类别的某些映射来创建“类别”列。 (您的初始描述表明您已经有了“类别”列,但是您的代码就没有意义了。)

如果我理解正确并且您想创建“类别”列,当子类别 == 1 时等于“a”,当子类别 == 2 时等于“a”,...,当子类别时等于“b” == 5,依此类推,那么你可以使用 pandas map() function。

subcategory_to_category_map = { "1": "a", "2": "a", "3": "a", "4": "b", "5": "b" }

df["Category"] = df["Subcategory"].map( subcategory_to_category_map )

确保在字典/地图中使用与“子类别”值相同的数据类型(即,如果它们是数字,则使用数字键,如果它们是字符串(“1”、“2”等),则使用字符串(如图所示))。 另请注意,任何不是字典中键的“子类别”值都将导致新的“类别”列具有缺失值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM