PANDAS:删除索引值并在 Excel 中将一个单元格中的值拆分为不同的行

我编写了这段代码来从一个 excel 文件中提取数据,并再次准备另一个带有提取的 ID、版本、阶段的 excel 文件。它提取它但错误地放置在excel中。它将值与索引一起放入excel中所有ID在一个单元格中所有版本在一个单元格中所以我希望它位于Id列下方的不同行
这是我的代码[输入文件链接](https://drive .google.com/file/d/1ZrUbftMppFf8L3jgWl2i8bsgUavOHnkZ/view?usp=sharing ) [输出文件链接] ( https://drive.google.com/file/d/1BoUiICzRgkX3AN9OcRIEDnh9c3qKNL3l/view?usp=sharing )

import pandas as pd

cols = ['ID']

vals = ['Version']

phas = ['Phase']

id_index_list = []

id_list = []

verindex_list = []

version_list = []

phaseindex_list = []

phases_list = []

tolist = []

df_pver = pd.read_excel('pver.xlsm', 'PVP', header = None)


#Name of Project

dz= df_pver.iloc[[0],[0]]


#Finding ID

dy= df_pver.xs(0)


for id in dy:

    if 'ID' in str(id):

        #ID list Finding location of Column where ID exists

        zr= dy[dy==id].index.values

        for item in zr:

            if not item in id_index_list:

                id_index_list.append(item)

        mylist = [df_pver.xs(0)[id_index_list]]

        #finding the location of ID and moving 3 column aside to find the Version

        ze= dy[dy==id].index.values + 3

        for item in ze:

            if not item in verindex_list:

                verindex_list.append(item)

        mylist2 = [df_pver.xs(0)[verindex_list]]

        #findind the phase the project is in

        zp= dy[dy==id].index.values + 1

        for item in zp:

            if not item in phaseindex_list:

                phaseindex_list.append(item)

        mylist3 = [df_pver.xs(1)[phaseindex_list]]



id_list.append(mylist)

version_list.append(mylist2)

phases_list.append(mylist3)


a = pd.DataFrame(id_list, columns = cols)

b = pd.DataFrame(version_list, columns = vals)

c = pd.DataFrame(phases_list, columns = phas)


此代码正在查找我需要但错误地给出输出的数据。


excel中的输出是


   id                  version                     required  

0  17 X 18 Y 22 Z     20 1  21 2 24 3            18 gantt 19 Pie 23 ipex

但我希望它像这样,没有索引也分成不同的行,而不是全部在一个单元格中。


  id      version     required

0 X        1           gantt

1 Y        2           Pie

2 Z        3           ipex

有人可以帮忙吗


弑天下
浏览 99回答 1
1回答

婷婷同学_

我假设您的列已经按 id、阶段和版本的顺序排列。索引 3 之后也没有数字ID:# read exceldf = pd.read_excel('pver.xlsx')# find the columns that start with ID, transpose, reset the index and split on colonids = df[df.columns[df.columns.str.startswith('ID')]].T.reset_index()['index'].str.split(':.|:', expand=True)[1].to_numpy()# find the columns that start with QA and transposephase = df[df.columns[df.columns.str.startswith('QA')]].T[0].to_numpy()# find the columns that start with V or OEM, and transposev = df[df.columns[df.columns.str.startswith('V') | df.columns.str.startswith('OEM SW')]].T.index# vstack and to pd.dataFramenew_df = pd.DataFrame(np.vstack([ids,v,phase])).T# name columnsnew_df.columns = ['ID', 'Version', 'Phase']           ID        Version               Phase0     1907839           V100  during development1    01907820           V110  during development2   189634226           V120  during development3                       V130  during development4           1           V200       Raw Container5           2           V220                 NaN6           3    OEM SW name                 NaN7           4  OEM SW name.1                 NaN8           5  OEM SW name.2                 NaN9           6  OEM SW name.3                 NaN10          7  OEM SW name.4                 NaN11          8  OEM SW name.5                 NaN12          9  OEM SW name.6                 NaN13         10  OEM SW name.7                 NaN14         11  OEM SW name.8                 NaN15         12  OEM SW name.9                 NaN
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python