对于数据框列中的每个值,我想在另一列(熊猫)上创建值

没有

我有一个数据框,其中包含许多患者及其六小时内的测量值,但是对于某些患者,并非所有六小时值都已记录。我想要为每个subject-id,在hour列中添加1到6形式的值,如果小时值已经存在,请将其写入相同的值,否则将其留空。
注意(我稍后将使用缺失值技术来处理此空白值。)

subject_id      hour        value
    2                 1           23
    2                 3           15
    2                 5           28
    2                 6           11
    3                 4           18
    3                 6           22

这是我想要得到的输出

  subject_id      hour        value
        2                 1           23
        2                 2     
        2                 3           15
        2                 4
        2                 5           28
        2                 6           11
        3                 1            
        3                 2           
        3                 3           
        3                 4           18
        3                 5           
        3                 6           22

任何人都可以帮助我,使任何帮助将不胜感激

耶斯列尔

使用DataFrame.reindexMultiIndex.from_product

mux = pd.MultiIndex.from_product([df['subject_id'].unique(), np.arange(1,7)],
                                  names=['subject_id','hour'])
df = df.set_index(['subject_id','hour']).reindex(mux).reset_index()
print (df)
    subject_id  hour  value
0            2     1   23.0
1            2     2    NaN
2            2     3   15.0
3            2     4    NaN
4            2     5   28.0
5            2     6   11.0
6            3     1    NaN
7            3     2    NaN
8            3     3    NaN
9            3     4   18.0
10           3     5    NaN
11           3     6   22.0

另一种方法是先创建所有可能的组合product,然后再DataFrame.merge进行左联接:

from  itertools import product
df1 = pd.DataFrame(list(product(df['subject_id'].unique(), np.arange(1,7))),
                                  columns=['subject_id','hour'])
df = df1.merge(df, how='left')
print (df)
    subject_id  hour  value
0            2     1   23.0
1            2     2    NaN
2            2     3   15.0
3            2     4    NaN
4            2     5   28.0
5            2     6   11.0
6            3     1    NaN
7            3     2    NaN
8            3     3    NaN
9            3     4   18.0
10           3     5    NaN
11           3     6   22.0

编辑:如果得到错误:

无法处理非唯一的多索引

表示每个subject_id都有重复的值hour

print (df)
   subject_id  hour  value
0           2     1     23 <- duplicate 2, 1
1           2     1     50 <- duplicate 2, 1
2           2     3     15
3           2     5     28
4           2     6     11
5           3     4     18
6           3     6     22

可能的解决方案是汇总summean替代set_index

mux = pd.MultiIndex.from_product([df['subject_id'].unique(), np.arange(1,7)],
                                  names=['subject_id','hour'])
df1 = df.groupby(['subject_id','hour']).sum().reindex(mux).reset_index()
print (df1)
    subject_id  hour  value
0            2     1   73.0
1            2     2    NaN
2            2     3   15.0
3            2     4    NaN
4            2     5   28.0
5            2     6   11.0
6            3     1    NaN
7            3     2    NaN
8            3     3    NaN
9            3     4   18.0
10           3     5    NaN
11           3     6   22.0

详细说明

print (df.groupby(['subject_id','hour']).sum())
                 value
subject_id hour       
2          1        73
           3        15
           5        28
           6        11
3          4        18
           6        22

或删除重复项:

mux = pd.MultiIndex.from_product([df['subject_id'].unique(), np.arange(1,7)],
                                  names=['subject_id','hour'])
df1 = (df.drop_duplicates(['subject_id','hour'])
         .set_index(['subject_id','hour'])
         .reindex(mux)
         .reset_index())
print (df1)
    subject_id  hour  value
0            2     1   23.0
1            2     2    NaN
2            2     3   15.0
3            2     4    NaN
4            2     5   28.0
5            2     6   11.0
6            3     1    NaN
7            3     2    NaN
8            3     3    NaN
9            3     4   18.0
10           3     5    NaN
11           3     6   22.0

详细说明

print (df.drop_duplicates(['subject_id','hour']))
   subject_id  hour  value
0           2     1     23 <- duplicates are removed
2           2     3     15
3           2     5     28
4           2     6     11
5           3     4     18
6           3     6     22

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据熊猫中另一列上的值在数据框中创建一个新列

来自分类Dev

根据另一列中的相同值组合熊猫数据框列中的文本值

来自分类Dev

根据熊猫数据框中另一列的最后一个值填充列

来自分类Dev

根据另一列中的值将值添加到熊猫数据框的一列中

来自分类Dev

根据另一列中的值将值添加到熊猫数据框的一列中

来自分类Dev

从熊猫数据框中另一列的每个唯一值的范围内的列中找到一个固定值

来自分类Dev

使用字典参考另一列值来映射熊猫数据框的一列中的缺失值

来自分类Dev

如何更改熊猫数据框中某个类别的另一列中的值?

来自分类Dev

我想使用数据框中的dict值在数据框中创建一列

来自分类Dev

迭代数据框中的每个列,将每个值与另一个数据框中的另一列中的值匹配

来自分类Dev

根据另一列中不同行中的值创建数据框或小标题

来自分类Dev

如何用另一列(熊猫)中的每个值减去列值

来自分类Dev

如何计算与数据框中另一列中每个唯一值相对应的值?

来自分类Dev

从熊猫数据框中基于另一列的列的每个列表中删除元素

来自分类Dev

快速搜索熊猫数据框并根据条件在数据框的另一列中插入值

来自分类Dev

一列的最大值基于另一列的每个唯一值(数据框)

来自分类Dev

pandas 数据框创建一个新列,其值基于另一列上的 groupby sum

来自分类Dev

如何根据来自另一个表的检查替换熊猫数据框中的一列中的值

来自分类Dev

将一列中的每个值除以 R 中另一列中的每个值(对于每个因子水平)

来自分类Dev

使用另一列上的键和字典中的值替换熊猫列值

来自分类Dev

熊猫根据另一列的值移动列数据

来自分类Dev

如何将一列中的值映射到数据框的另一列?

来自分类Dev

为数据框中的一列的每个值填充其余的列值

来自分类Dev

当要求一列中的值创建另一列中的值时,可使用熊猫

来自分类Dev

根据条件在数据框列中更改值,在另一列中更改值

来自分类Dev

如果另一列中的值彼此相邻,则求和数据框中的列值

来自分类Dev

数据框,使用基于另一列索引的值创建一个新列

来自分类Dev

在标准SQL中,如何选择行,以便对于一列中的每个唯一值,另一列中的所有值都是指定值?

来自分类Dev

在标准SQL中,如何选择行,以便对于一列中的每个唯一值,另一列中的所有值都是指定值?

Related 相关文章

  1. 1

    根据熊猫中另一列上的值在数据框中创建一个新列

  2. 2

    根据另一列中的相同值组合熊猫数据框列中的文本值

  3. 3

    根据熊猫数据框中另一列的最后一个值填充列

  4. 4

    根据另一列中的值将值添加到熊猫数据框的一列中

  5. 5

    根据另一列中的值将值添加到熊猫数据框的一列中

  6. 6

    从熊猫数据框中另一列的每个唯一值的范围内的列中找到一个固定值

  7. 7

    使用字典参考另一列值来映射熊猫数据框的一列中的缺失值

  8. 8

    如何更改熊猫数据框中某个类别的另一列中的值?

  9. 9

    我想使用数据框中的dict值在数据框中创建一列

  10. 10

    迭代数据框中的每个列,将每个值与另一个数据框中的另一列中的值匹配

  11. 11

    根据另一列中不同行中的值创建数据框或小标题

  12. 12

    如何用另一列(熊猫)中的每个值减去列值

  13. 13

    如何计算与数据框中另一列中每个唯一值相对应的值?

  14. 14

    从熊猫数据框中基于另一列的列的每个列表中删除元素

  15. 15

    快速搜索熊猫数据框并根据条件在数据框的另一列中插入值

  16. 16

    一列的最大值基于另一列的每个唯一值(数据框)

  17. 17

    pandas 数据框创建一个新列,其值基于另一列上的 groupby sum

  18. 18

    如何根据来自另一个表的检查替换熊猫数据框中的一列中的值

  19. 19

    将一列中的每个值除以 R 中另一列中的每个值(对于每个因子水平)

  20. 20

    使用另一列上的键和字典中的值替换熊猫列值

  21. 21

    熊猫根据另一列的值移动列数据

  22. 22

    如何将一列中的值映射到数据框的另一列?

  23. 23

    为数据框中的一列的每个值填充其余的列值

  24. 24

    当要求一列中的值创建另一列中的值时,可使用熊猫

  25. 25

    根据条件在数据框列中更改值,在另一列中更改值

  26. 26

    如果另一列中的值彼此相邻,则求和数据框中的列值

  27. 27

    数据框,使用基于另一列索引的值创建一个新列

  28. 28

    在标准SQL中,如何选择行,以便对于一列中的每个唯一值,另一列中的所有值都是指定值?

  29. 29

    在标准SQL中,如何选择行,以便对于一列中的每个唯一值,另一列中的所有值都是指定值?

热门标签

归档