导入每个值都包含列标签的数据

2024-09-28 16:58:52 发布

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

我在一个没有标题的文本文件中有数据。每行中的值都有一个标签,指示它们属于哪一列。我想将这些标签作为列名,并将数据输入列下

我要导入包含以下内容的文本文件:

Column1=variable11&Column2=variable12&Column3=variable13&Column4=variable14
Column1=variable12&Column2=variable22&Column3=variable23
Column1=variable13&Column2=variable32&Column3=variable33&Column4=variable34&Column5=variable35

我希望结果是这样一张表:

Column1         Column2         Column3         Column4         Column5
variable11  variable12  variable13  variable14  
variable21  variable22  variable23      
variable31  variable32  variable33  variable34  variable35

Tags: 数据标签文本文件column1column2column4column3variable11
2条回答

我假设第2行和第3行的Column1=variable1=21是错误的

df = pd.read_csv('file', header=None)

df = df[0].str.split('=|&', expand=True)
tmp = df.loc[:,1::2].copy()
tmp.columns = df.loc[:,::2].apply(lambda x: x.dropna().iloc[0])

输出

    Column1     Column2     Column3     column4     Column5
0   variable11  variable12  variable13  variable14  None
1   variable21  variable22  variable23  None        None
2   variable31  variable32  variable33  variable34  variable35

如果数据中有多个输入错误,可能需要split两次才能将格式返回dict,然后将dict传递给pandas.DataFrame构造函数

pd.DataFrame([dict(x)for x in df.Read.str.split('&').apply(lambda x : [tuple(y.split('=',1)) for y in x])])
Out[128]: 
        Column1     Column2     Column3     Column4     Column5     column4
0    variable11  variable12  variable13         NaN         NaN  variable14
1  variable1=21  variable22  variable23         NaN         NaN         NaN
2  variable1=31  variable32  variable33  variable34  variable35         NaN

df=pd.DataFrame([dict(x)for x in df.Read.str.split('&').apply(lambda x : [tuple(y.split('=',1)) for y in x])])
df.columns=df.columns.str.upper()
df=df.sum(axis=1,level=0)

相关问题 更多 >