如何根据条件将值分配给数据框的列?

鲁菲26

我有一个数据框,如下所示:

POSITION    Code_Count
   S1       {"[471E;1]"}
   S2       {"[471E;1]"}
   S3       {"[471E;1]"} 
   S4       {"[471E;1]"}
   S5       {"[471E;1]"}
   S6       {"[5812;1]"}
   S7       {"[471E;1]"}
   S8       {"[471E;1]"}
   T1       {"[7A2A;1]"}
   T2       {"[471E;1]"}
   T3       {"[7C95;1]"}
   T4       {"[471E;1]"}
   T5       {"[471E;1]"}
   T6       {"[471E;1]"}
   T7       {"[471E;1]"}
   T8       {"[471E;1]"}

在Code_Count列中,第一个字符串是代码,数字是计数。此外,这些代码分为A到D 4个类别。下面列出了所有存在的代码列表:这些代码分为4个类别,即A到D,如下所示:

类别A包含以下代码:7749 7783 7784 7786 7A14 7AC5 7C88 7C92 7C93 7C95 C749 C783 C784 C786 CA14 CAC5 CC88 CC92 CC93 CC95 442A 49C2

类别B具有以下代码:1D 32 430B 4415 448E 4490 4492 457A 457B 496C 4970 778A 7A09 7A2A 7A2C 7C7C 7C80 C78A CA09 CA2A CA2C

类别C具有以下代码:7A7F 7A80 7C7E CA7F CA80 CAC8 7AC8 C77E 445A 496E 471E 49E

类别D:7AF0 7AF1 7AF2 7AF3 CAF0 CAF1 CAF2 CAF3 4616 4617 4618 5812

我希望我的最终数据框通过根据它们所属的类别对它们进行分类,从而根据初始数据框中存在的代码将代码计数包含到相应位置。例如,根据上述数据帧的输出数据帧应为:

POSITION    Category A     Category B      Category C     Category D
   S1           0              0               1              0
   S2           0              0               1              0
   S3           0              0               1              0
   S4           0              0               1              0
   S5           0              0               1              0
   S6           0              0               0              1
   S7           0              0               1              0
   S8           0              0               1              0
   T1           0              1               0              0
   T2           0              0               1              0
   T3           1              0               0              0
   T4           0              0               1              0
   T5           0              0               1              0
   T6           0              0               1              0
   T7           0              0               1              0
   T8           0              0               1              0           

我尝试使用str.contains方法,但没有成功。任何帮助将非常感激。在此先多谢!

耶斯列尔

我想你可以通过提取值stripsplit第一,然后添加Count通过ix与形成的遮掩isin最后drop不需要的列和fillna 0

catA = ['7749','7783','7784','7786','7A14','7AC5','7C88','7C92','7C93','7C95','C749','C783','C784','C786','CA14','CAC5','CC88','CC92','CC93','CC95','442A','49C2']
catB = ['1D','32','430B','4415','448E','4490','4492','457A','457B','496C','4970','778A','7A09','7A2A','7A2C','7C7C','7C80','C78A','CA09','CA2A','CA2C']
catC = ['7A7F','7A80','7C7E','CA7F','CA80','CAC8 7AC8 C77E','445A','496E','471E','49CA']
catD = ['7AF0','7AF1','7AF2','7AF3','CAF0','CAF1','CAF2','CAF3','4616','4617','4618','5812']

df[['Code','Count']] = df.Code_Count.str.strip('{["]}').str.split(';', expand=True)
df['Category A'] = df.ix[df.Code.isin(catA), 'Count']
df['Category B'] = df.ix[df.Code.isin(catB), 'Count']
df['Category C'] = df.ix[df.Code.isin(catC), 'Count']
df['Category D'] = df.ix[df.Code.isin(catD), 'Count']
df.drop(['Code_Count', 'Code', 'Count'], axis=1, inplace=True)

df[['Category A','Category B','Category C','Category D']] = 
df[['Category A','Category B','Category C','Category D']].fillna(0)
print (df)
   POSITION Category A Category B Category C Category D
0        S1          0          0          1          0
1        S2          0          0          1          0
2        S3          0          0          1          0
3        S4          0          0          1          0
4        S5          0          0          1          0
5        S6          0          0          0          1
6        S7          0          0          1          0
7        S8          0          0          1          0
8        T1          0          1          0          0
9        T2          0          0          1          0
10       T3          1          0          0          0
11       T4          0          0          1          0
12       T5          0          0          1          0
13       T6          0          0          1          0
14       T7          0          0          1          0
15       T8          0          0          1          0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

创建一列,根据另一行中的事件将值分配给数据框中的一行

来自分类Dev

相应地将数据分配给“新列”并根据值合并重复数据

来自分类Dev

将结果分配给数据框的多列

来自分类Dev

如何将新值从lapply分配给列表中数据框的新列

来自分类Dev

将“ true” /“ false”值的数据框列转换为1或0,然后分配给数据框

来自分类Dev

根据字符串条件将值分配给pandas数据框列

来自分类Dev

将值分配给multiindex定义的数据框

来自分类Dev

如何将系列或序列分配给dask数据框列?

来自分类Dev

熊猫,如何避免使用iterrow(如何根据另一个数据框的值将值分配给数据框的新列)

来自分类Dev

根据两个熊猫数据框之间的条件将值分配给新列

来自分类Dev

使用R,如何根据范围内的数字将值分配给新列?

来自分类Dev

根据条件将布尔值分配给新列

来自分类Dev

如何将值分配给字典中的数据框列

来自分类Dev

从R中的向量将值分配给数据框的一列

来自分类Dev

通过字典将条件组合分配给数据框中的新列

来自分类Dev

将满足条件的第一行的值分配给数据框

来自分类Dev

创建一列,根据另一行中的事件将值分配给数据框中的一行

来自分类Dev

熊猫-根据多个条件将值分配给空列

来自分类Dev

Python数据框:是否根据条件将值分配给列?

来自分类Dev

如何将带有字符串值的列分配给数据框

来自分类Dev

数据框-将值分配给相应的索引

来自分类Dev

如何通过与名称匹配的键将字典值分配给数据框

来自分类Dev

根据逻辑表达式将值分配给R数据框中的新列

来自分类Dev

如何将pandas.core.series.Series分配给pandas数据框列

来自分类Dev

根据条件将值分配给另一列中的一列

来自分类Dev

如何将系列的值分配给数据框的列名

来自分类Dev

通过“assign”将新列分配给数据框

来自分类Dev

r 根据值将字符分配给列

来自分类Dev

python - 我如何将列分配给我的数据框?

Related 相关文章

  1. 1

    创建一列,根据另一行中的事件将值分配给数据框中的一行

  2. 2

    相应地将数据分配给“新列”并根据值合并重复数据

  3. 3

    将结果分配给数据框的多列

  4. 4

    如何将新值从lapply分配给列表中数据框的新列

  5. 5

    将“ true” /“ false”值的数据框列转换为1或0,然后分配给数据框

  6. 6

    根据字符串条件将值分配给pandas数据框列

  7. 7

    将值分配给multiindex定义的数据框

  8. 8

    如何将系列或序列分配给dask数据框列?

  9. 9

    熊猫,如何避免使用iterrow(如何根据另一个数据框的值将值分配给数据框的新列)

  10. 10

    根据两个熊猫数据框之间的条件将值分配给新列

  11. 11

    使用R,如何根据范围内的数字将值分配给新列?

  12. 12

    根据条件将布尔值分配给新列

  13. 13

    如何将值分配给字典中的数据框列

  14. 14

    从R中的向量将值分配给数据框的一列

  15. 15

    通过字典将条件组合分配给数据框中的新列

  16. 16

    将满足条件的第一行的值分配给数据框

  17. 17

    创建一列,根据另一行中的事件将值分配给数据框中的一行

  18. 18

    熊猫-根据多个条件将值分配给空列

  19. 19

    Python数据框:是否根据条件将值分配给列?

  20. 20

    如何将带有字符串值的列分配给数据框

  21. 21

    数据框-将值分配给相应的索引

  22. 22

    如何通过与名称匹配的键将字典值分配给数据框

  23. 23

    根据逻辑表达式将值分配给R数据框中的新列

  24. 24

    如何将pandas.core.series.Series分配给pandas数据框列

  25. 25

    根据条件将值分配给另一列中的一列

  26. 26

    如何将系列的值分配给数据框的列名

  27. 27

    通过“assign”将新列分配给数据框

  28. 28

    r 根据值将字符分配给列

  29. 29

    python - 我如何将列分配给我的数据框?

热门标签

归档