小编Oli*_*ver的帖子

Python Pandas MultiIndexing:复制行并在新列中添加区分信息

我是一名 python 初学者,试图复制现有行,同时在新列中添加区分信息。目前,我的 DataFrame 看起来像这样:

Patient  Visit
      1     V1
      1     V2
      1     V3
      2     V1
      2     V2
Run Code Online (Sandbox Code Playgroud)

我想添加一个新列Test,它 for V1requires Test 1,但 for V2andV3需要Test 1Test 2

Patient  Visit    Test
      1     V1  Test 1
      1     V2  Test 1
      1     V2  Test 2
      1     V3  Test 1
      1     V3  Test 2
      2     V1  Test 1
      2     V2  Test 1
      2     V2  Test 2
Run Code Online (Sandbox Code Playgroud)

然后我还想添加一个列Sample,为每个测试添加一个AB示例:

Patient …
Run Code Online (Sandbox Code Playgroud)

python pandas

2
推荐指数
1
解决办法
42
查看次数

使用函数和循环创建子图

我有一个很好的函数,可以用两条线绘制一个图……它本身就可以很好地工作。然而,我想运行它 4 次以制作 2row x 2col 子图。我找不到一种好方法来多次运行该函数并将每个函数添加到子图中。

import matplotlib.pyplot as plt

patient = [['P1', [1,6,12,18,24], [15,17,16,19,15]],
           ['P2', [1,6,12,18,24], [12,13,17,18,18]],
           ['P3', [1,6,12,18,24], [19,19,12,11,9]],
           ['P4', [1,6,12,18,24], [8,7,3,12,15]]]

def plot_graph(patient):
    name = patient[0]
    X = patient[1]
    Y = patient[2]

    fig, ax = plt.subplots()

    #first line
    ax.plot([X[0],X[-1]],[Y[0],Y[-1]+20], marker='o', label='Line 1')

    #second line
    ax.plot(X,Y,marker='o',label='Line 2')

    #axis settings
    ax.set_ylim([0,80])
    ax.invert_yaxis()
    ax.set_title('My Graph')
    for x,y in zip(X,Y): ax.annotate(y,(x,y-4))
    ax.legend(loc=8)


plot_graph(patient[0])

plt.show()
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib subplot

2
推荐指数
1
解决办法
1507
查看次数

Python 索引嵌套字典与列表

如果我有一个嵌套字典和不同的列表:

d = {'a': {'b': {'c': {'d': 0}}}}
list1 = ['a', 'b']
list2 = ['a', 'b', 'c']
list3 = ['a', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)

我如何访问字典值,如下所示:

>>> d[list1]
{'c': {'d': 0}}
>>> d[list3]
0
Run Code Online (Sandbox Code Playgroud)

python dictionary list

0
推荐指数
1
解决办法
111
查看次数

标签 统计

python ×3

dictionary ×1

list ×1

matplotlib ×1

pandas ×1

plot ×1

subplot ×1