![](/img/trans.png)
[英]Fill values in a column of a particular row with the value of same column from another row based on a condition on second column in Pandas
[英]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.