gpt4 book ai didi

python - 从python中的数组中获取所有可能的值

转载 作者:太空宇宙 更新时间:2023-11-03 14:46:17 26 4
gpt4 key购买 nike

我有一个包含多个(超过 1000 个)列和行的文件,它们的名称不遵循任何模式。它的例子如下:

file1.txt

IDs AABC ABC6 YHG.8 D78Ha
Ellie 12 48.70 33
Kate 98 34 21 76.36
Joe 22 53 49
Van 77 40 12.1
Xavier 88.85

首先,我必须用 NA 填充空白,这样它看起来像:

file1.txt



IDs AABC ABC6 YHG.8 D78Ha
Ellie 12 NA 48.70 33
Kate 98 34 21 76.36
Joe 22 53 49 NA
Van 77 NA 40 12.1
Xavier NA NA NA 88.85

然后,我尝试获取 ID 和其他列的所有组合,如 AABC、ABC6、YHG.8 和 D78Ha,例如:

Ellie , AABC --> 12
Ellie, ABC6 --> NA
Ellie, YHG.8 --> 48.70 ( without rounding )
Ellie, D78Ha --> 33
Kate,AABC --> 98
Kate, ABC6 --> 34
...

因此所需的输出应该是 20 行(4 列 x 5 ID),如下所示:

output.txt


Ellie AABC 12
Ellie ABC6 NA
Ellie YHG.8 48.70
Ellie D78Ha 33
Kate AABC 98
Kate ABC6 34
..

因此,我用 NA 手动填充空白,用 pandas 读取文件,并对 IDs 进行索引。

这样我就可以使用 ID 名称和其他列名称进行访问。

但我无法迭代它。我的尝试是:

import pandas as pd
tablefile = pd.read_csv('file1.txt',sep='\t')
print(tablefile)
df2=tablefile.set_index("IDs")
print("Ellie AABC " , df2.loc["Ellie", "AABC" ])
print("Kate AABC " , df2.loc["Kate", "AABC" ])
print("Xavier AABC " , df2.loc["Xavier", "AABC" ])

它打印:

('Ellie AABC ', 12.0)
('Kate AABC ', 98.0)
('Xavier AABC ', nan)

我怎样才能用 NA 填充空白并在这个数组中迭代而不通过一个一个地写入名称来调用名称?也许在 [i,i] 中增加 i

最佳答案

IIUC stack with dropna = False

df.set_index('IDs').stack(dropna=False).astype(object).reset_index()

Out[915]:
IDs level_1 0
0 Ellie AABC 12
1 Ellie ABC6 NaN
2 Ellie YHG.8 48.7
3 Ellie D78Ha 33
4 Kate AABC 98
5 Kate ABC6 34
6 Kate YHG.8 21
7 Kate D78Ha 76.36
8 Joe AABC 22
9 Joe ABC6 53
10 Joe YHG.8 49
11 Joe D78Ha NaN
12 Van AABC 77
13 Van ABC6 NaN
14 Van YHG.8 40
15 Van D78Ha 12.1
16 Xavier AABC NaN
17 Xavier ABC6 NaN
18 Xavier YHG.8 NaN
19 Xavier D78Ha 88.85

关于python - 从python中的数组中获取所有可能的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49070594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com