在Python中从数组中获取所有可能的值

2024-10-02 22:29:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含多个(超过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填充空格,这样它看起来像:

^{2}$

然后,我尝试将id和其他列的所有组合作为AABC, ABC6,YHG.8 and 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 columns x 5 IDs)),如下所示:

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)

我怎样才能用NAs填补空白并在这个数组中迭代,而不需要逐个地写名字呢?也许随着i[i,i]中的增加?在


Tags: 文件txt名称idslocdf2printna
2条回答

只需^{}来重塑dataframe:

数据

from io import StringIO 
import pandas as pd

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.8"""

tabledf = pd.read_table(StringIO(txt), sep="\s+")

熔化

^{pr2}$

IIUC stack带{}

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

相关问题 更多 >