如何在jupyter notebook中用pandas对下面的第二列按照反斜杠提取内容(即如何将第二列以反斜杠为分隔符,将其分割成多个列),以及如何提取第四列中的数字

img

请问有没有人知道如何用pandas将第二列以反斜杆为分隔符,将其划分为多个列,以及如何提取第四列中的数字。


import re
import pandas as pd
df = pd.DataFrame(columns = 'info,voet_count'.split(','))
df.loc[len(df)] = ['余华/江南出版社/1990-27/20元','fasdf12345']
print(df)
df[['作者','出版社','出版时间','售价']] =[x.split('/') for x in df['info'].tolist()]
df['voet_count'] =  [re.search('\d+',x).group() for x in df['voet_count'].tolist()]
df1  = df[['作者','出版社','出版时间','售价','voet_count']]
print('------------------------')
print(df1)

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7735362
  • 你也可以参考下这篇文章:jupyter notebook 之 pandas
  • 除此之外, 这篇博客: 解决在jupyter中使用pandas输出excel表时候科学计数的问题!中的 常用参数解析 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    - excel_writer : string or ExcelWriter object File path or existing ExcelWriter目标路径
    - sheet_name : string, default ‘Sheet1' Name of sheet which will contain DataFrame,填充excel的第几页
    - na_rep : string, default ”,Missing data representation 缺失值填充
    - float_format : 字符串,默认None,格式化浮点数的字符串
    - columns : sequence, optional,Columns to write 选择输出的的列。
    - header : 布尔或字符串列表,默认为Ture。写出列名。如果给定字符串列表,则假定它是列名称的别名
    - index : boolean, default True,Write row names (index) 索引(False表示不写入)
    - index_label : 如果需要,可以使用索引列的列标签。如果没有给出,标题和索引为true,则使用索引名称。如果数据文件使用多索引,则需使用序列。
    - startrow :左上角的单元格行来转储数据框
    - startcol :左上角的单元格列转储数据帧
    - engine : 字符串,默认没有使用写引擎 - 您也可以通过选项io.excel.xlsx.writer,io.excel.xls.writer和io.excel.xlsm.writer进行设置。
    - merge_cells : 布尔,默认为Ture,编码生成的excel文件。 只有xlwt需要,其他编写者本地支持unicode。
    - encoding: string, default None encoding of the resulting excel file. Only necessary for xlwt,other writers support unicode natively.
    - inf_rep : 字符串,默认“正”。无穷大的表示(在Excel中不存在无穷大的本地表示)
    - freeze_panes :整数的元组(长度2),默认为None。指定要冻结的基于1的最底部行和最右边的列
    
  • 您还可以看一下 李炳辰老师的高频交易系统编写(纳秒级,多进程,分布式,附基础代码)课程中的 以jupyter和pandas处理日线数据为例,说明pandas和jupyter的用法小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    首先读入需要处理的数据,假设数据路径为"data.csv",然后用pandas的read_csv函数将其读入成DataFrame的形式:

    import pandas as pd
    df = pd.read_csv("data.csv",header=None)
    

    根据题目要求,需要将第二列以反斜杆为分隔符,将其划分为多个列。我们可以用pandas的str.split函数来实现:

    df[[2,3,4]] = df[1].str.split(pat='\\',n=-1,expand=True)
    

    以上代码将第二列以反斜杆为分隔符,分为三列,并将这三列分别赋值给第三列、第四列和第五列。

    接着,需要提取第四列中的数字。我们可以用pandas的str.extract函数来实现:

    df[4] = df[4].str.extract('(\d+)')
    

    以上代码提取了第四列中的数字,并替换原来的值。

    最后,将处理好的数据保存到Excel文件中,可以用pandas的to_excel函数实现:

    df.to_excel('output.xlsx', index=False, header=False)
    

    以上代码将DataFrame对象输出到output.xlsx文件中,不包含列名和索引列。如果需要列名和索引列,把参数header和index都改为True即可。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^