我是一名 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 1和Test 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,为每个测试添加一个A和B示例:
Patient …Run Code Online (Sandbox Code Playgroud) 我有一个很好的函数,可以用两条线绘制一个图……它本身就可以很好地工作。然而,我想运行它 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) 如果我有一个嵌套字典和不同的列表:
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)