尝试解析数据框中的单元格

2024-04-25 08:26:13 发布

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

我有一个数据框,它是由excel电子表格中选定的一些列组成的。在

xls_file = pd.ExcelFile('seedtestexcelbytask.xls') 
writer = ExcelWriter('DFExport.xls') 
df = xls_file.parse(usecols=[2, 3, 15])

这是数据帧的一个小例子

^{2}$

第15列有不同的值,有的用空格隔开,有的用逗号,有的用斜杠隔开,下面是一个例子

Seed 2 1.5in Holon, 26/1/2, 21/2, RW/1/2, H/7 

基本上,我试图重新格式化df,方法是读取一行,保留第3列中的日期值,然后解析第15列的行上的单元格,并进一步分解该单元格,将日期和某些值添加到下一行

2/2/18    83     1
2/2/18    83     2
2/3/18    83     5
2/5/18    26     1
2/5/18    26     2
2/5/18    21     2
2/5/18    RW     1
2/5/18    RW     2
2/5/18     H     7 

我尝试过xlrd和xlwt选项,但发现我只是不断地添加嵌套for循环,但我不认为这是最有效的方法,或者是这样?我发现了熊猫iterrows(),但我很难找到我想要的输出。我不认为我需要一些可以复制和粘贴的代码,但是作为Python新手,我很难正确地实现pandas。作为Python的新手,任何一个指针都是很棒的!!在


Tags: 数据方法dfxlsexcel例子filewriter
1条回答
网友
1楼 · 发布于 2024-04-25 08:26:13

你可以试试这个:

import pandas as pd
a = pd.DataFrame({2:['2/2/18','2/3/18','2/5/18'],3:['Seed 2 2in Holon, 83/1/2','Seed 1 1in Holon, 83/5','Seed 2 1.5in Holon, 26/1/2, 21/2, RW/1/2, H/7']})
a= pd.concat([pd.Series(row[2],row[3].split(',')) for _, row in a.iterrows()]).reset_index()
a= a[a['index'].str.contains('/')].reset_index(drop = True)
y = pd.DataFrame(a['index'].str.split('/',1).tolist(),columns = ['first','rest'])
y[0] = a[0]
df1 = pd.concat([pd.Series(row['first'],row['rest'].split('/')) for _, row in y.iterrows()]).reset_index()
df2 = pd.concat([pd.Series(row[0],row['rest'].split('/')) for _, row in y.iterrows()]).reset_index()
df1['date'] = df2[0]
print(df1)

结果:

^{pr2}$

相关问题 更多 >