【问题标题】:Add values from columns into a new column using pandas使用熊猫将列中的值添加到新列中
【发布时间】:2018-07-17 12:53:04
【问题描述】:

我有一个数据框:

id    category    value
1       1          abc
2       2          abc
3       1          abc
4       4          abc
5       4          abc
6       3          abc

类别1 = best2 = good3 = bad4 =ugly

我想创建一个新列,对于类别 1,列中的值应为 cat_1,对于类别 2,列中的值应为 cat2

new_col2 中类别 1 的值应为 cat_best,类别 2 的值应为 cat_good

df['new_col'] = ''

我最后的df

id    category    value   new_col   new_col2
1       1          abc     cat_1     cat_best
2       2          abc     cat_2     cat_good
3       1          abc     cat_1     cat_best
4       4          abc     cat_4     cat_ugly
5       4          abc     cat_4     cat_ugly
6       3          abc     cat_3     cat_bad

我可以在 for 循环中迭代它:

for index,row in df.iterrows():
    df.loc[df.id == row.id,'new_col'] = 'cat_'+str(row['category'])

有没有更好的方法(最省时)

【问题讨论】:

  • @Zero 我想我的第二部分不是重复的

标签: python pandas


【解决方案1】:

我认为您需要将列转换为字符串的连接字符串和map 与第二列的连接:

d = {1:'best', 2: 'good', 3 : 'bad', 4 :'ugly'}
df['new_col'] = 'cat_'+ df['category'].astype(str)
df['new_col2'] = 'cat_'+ df['category'].map(d)

或者:

df = df.assign(new_col= 'cat_'+ df['category'].astype(str), 
               new_col2='cat_'+ df['category'].map(d))

print (df)
   id  category value new_col  new_col2
0   1         1   abc   cat_1  cat_best
1   2         2   abc   cat_2  cat_good
2   3         1   abc   cat_1  cat_best
3   4         4   abc   cat_4  cat_ugly
4   5         4   abc   cat_4  cat_ugly
5   6         3   abc   cat_3   cat_bad

【讨论】:

  • 我在输出中又添加了一列(编辑)。如果 category = 1,它是最好的,所以 new_col2 中的值应该是 cat_best , n 以此类推
【解决方案2】:

您也可以使用 apply 来做到这一点:

df['new_col']=df['category'].apply(lambda x: "cat_"+str(x))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2015-09-19
    • 2022-11-12
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    相关资源
    最近更新 更多