如何在Python中将字符串列表转换为PandasDataFrame

k10s72fa  于 2022-11-27  发布在  Python
关注(0)|答案(2)|浏览(313)

我有一个包含如下数据的.txt文件。第一个元素是用空格分隔的列名,下一个元素是数据。

['n      Au[%]     Ag[%]     Cu[%]     Zn[%]     Ni[%]     Pd[%]     Fe[%]     Cd[%]     mq[ ]', 
'1   71.085    4.6578    22.468    1.6971    0.0292    0.0000    0.0627    0.0000    1.1019', 
'2   71.444    4.0611    22.946    1.4333    0.0400    0.0000    0.0763    0.0000    1.1298', 
'3   71.845    4.2909    22.308    1.4234    0.0293    0.0000    0.1031    0.0000    1.0750', 
'4   71.842    4.2794    22.290    1.4686    0.0339    0.0000    0.0856    0.0000    1.1334']

如何将此文本列表转换为PandasDataFrame?

ghg1uchk

ghg1uchk1#

根据您提供的信息,我已经编写了几行基本的Python代码。

# Import needed dependencies
import pandas as pd

下面是您的数据,如上所示。我保留了它的原始格式,但添加'%'在最后一列的值为一致性的缘故。

mylist = [
'n      Au[%]     Ag[%]     Cu[%]     Zn[%]     Ni[%]     Pd[%]     Fe[%]     Cd[%]     mq[%]', 
'1   71.085    4.6578    22.468    1.6971    0.0292    0.0000    0.0627    0.0000    1.1019', 
'2   71.444    4.0611    22.946    1.4333    0.0400    0.0000    0.0763    0.0000    1.1298', 
'3   71.845    4.2909    22.308    1.4234    0.0293    0.0000    0.1031    0.0000    1.0750', 
'4   71.842    4.2794    22.290    1.4686    0.0339    0.0000    0.0856    0.0000    1.1334'
]

提取第一个列表元素,因为它包含将成为列值的值。

# Extract the column values from the first row
col_values = mylist[0]
col_values = col_values.split()
del col_values[0]

取每个列表元素并将其分解为字符串组件,同时删除第一个元素。

# Loop through each row of the file.

a_list = []

for row in mylist[1:]:
    
    row_values = row
    row_values = row_values.split()
    
    del row_values[0]
    a_list.append(row_values)

将所有列值收集到名为main_list的主列表中。

# Count variable
count = 0
main_list = []

for col in col_values:

    temp_list = []
    for _list in a_list:
        temp_list.append(_list[count])
    
    main_list.append(temp_list)

    count += 1

现在,让我们创建一个字典,并使用它来创建一个 Dataframe 。

my_dct = {}

# Create custom dictionary based on dim's of main_list

for iteration in range(len(main_list)):
    my_dct.update({col_values[iteration]:main_list[iteration]})

my_df = pd.DataFrame(dct)

A quick screen capture of the above code run within a Kaggle notebook
希望您会发现这对您有用。

8aqjt8rx

8aqjt8rx2#

pandas.read_csv()delim_whitespace选项一起使用:-)
输入文件data.txt

n      Au[%]     Ag[%]     Cu[%]     Zn[%]     Ni[%]     Pd[%]     Fe[%]     Cd[%]     mq[ ]
    1   71.085    4.6578    22.468    1.6971    0.0292    0.0000    0.0627    0.0000    1.1019             
    2   71.444    4.0611    22.946    1.4333    0.0400    0.0000    0.0763    0.0000    1.1298             
    3   71.845    4.2909    22.308    1.4234    0.0293    0.0000    0.1031    0.0000    1.0750             
    4   71.842    4.2794    22.290    1.4686    0.0339    0.0000    0.0856    0.0000    1.1334

处理中

import pandas as pd

file = "/path/to/file"

df = pd.read_csv(file, delim_whitespace=True)

输出量

n   Au[%]   Ag[%]   Cu[%]   Zn[%]   Ni[%]  Pd[%]   Fe[%]  Cd[%]     mq[   ]
0  1  71.085  4.6578  22.468  1.6971  0.0292    0.0  0.0627    0.0  1.1019 NaN
1  2  71.444  4.0611  22.946  1.4333  0.0400    0.0  0.0763    0.0  1.1298 NaN
2  3  71.845  4.2909  22.308  1.4234  0.0293    0.0  0.1031    0.0  1.0750 NaN
3  4  71.842  4.2794  22.290  1.4686  0.0339    0.0  0.0856    0.0  1.1334 NaN

相关问题