futui 发表于 2023-5-6 21:01:50

想把数据帧某列内容简化,请大师帮忙,谢谢

想把下面的数据帧简化成最下面的内容,请大师帮忙,谢谢

import pandas as pd

data = [['1:300395/菲利华/8.03%/536.81/23,565.83。;2:300593/新雷能/7.01%/653.62/20,562.93。;3:002025/航天电器/6.27%/320.10/18,402.70。'],
      ['5:603259/药明康德/3.91%/144.50/11,487.69。;7:688281/华秦科技/3.35%/38.35/9,835.65。;8:603712/七一二/2.81%/267.06/8,257.51。']]

columns = ["编号"]
df = pd.DataFrame(data, columns=columns)



data = [[菲利华/8.03;新雷能/7.01;航天电器/6.27’],
[‘药明康德/3.91;华秦科技/3.35;七一二/2.81’]]

歌者文明清理员 发表于 2023-5-6 21:02:48

以下是可以实现该功能的代码:

python
import re
import pandas as pd

data = [['1:300395/菲利华/8.03%/536.81/23,565.83。;2:300593/新雷能/7.01%/653.62/20,562.93。;3:002025/航天电器/6.27%/320.10/18,402.70。'],
      ['5:603259/药明康德/3.91%/144.50/11,487.69。;7:688281/华秦科技/3.35%/38.35/9,835.65。;8:603712/七一二/2.81%/267.06/8,257.51。']]

columns = ["编号"]
df = pd.DataFrame(data, columns=columns)

# 获取每个编号下的股票名字和占比信息
stocks = df["编号"].str.findall(r'/(\S+)/(\d+\.\d+)%')

# 将结果转成字符串格式,多个项之间用分号隔开
result = stocks.apply(lambda x : ';'.join(['{} / {}'.format(*y) for y in x]))

# 将数据加入到一个新的DataFrame中
df_result = pd.DataFrame(result, columns=["股票"])

print(df_result)
以上代码的原理是使用正则表达式查找每个编号下的股票名称和占比信息(其中 \S+ 匹配除空白字符以外的所有字符,\d+\.\d+ 匹配数字和小数点),然后对这些数据进行整理和格式化,最后将它们加入到一个新的DataFrame中。

陶远航 发表于 2023-5-6 21:03:10

你好,你可以使用以下代码来简化数据帧:
import pandas as pd

data = [['1:300395/菲利华/8.03%/536.81/23,565.83。;2:300593/新雷能/7.01%/653.62/20,562.93。;3:002025/航天电器/6.27%/320.10/18,402.70。'],
      ['5:603259/药明康德/3.91%/144.50/11,487.69。;7:688281/华秦科技/3.35%/38.35/9,835.65。;8:603712/七一二/2.81%/267.06/8,257.51。']]

columns = ["编号"]
df = pd.DataFrame(data, columns=columns)

df['编号'] = df['编号'].str.split(';')
df['编号'] = df['编号'].apply(lambda x: + '/' + i.split('/').replace('%', '') for i in x])
这将会把数据帧简化成以下内容:
data = [['菲利华/8.03', '新雷能/7.01', '航天电器/6.27'],
      ['药明康德/3.91', '华秦科技/3.35', '七一二/2.81']]
希望这可以帮到你!如果你还有其他问题,请随时问我。

歌者文明清理员 发表于 2023-5-6 21:05:10

为什么为什么为什么为什么为什么

isdkz 发表于 2023-5-6 21:05:32

歌者文明清理员 发表于 2023-5-6 21:05
为什么为什么为什么为什么为什么

我也想问

陶远航 发表于 2023-5-6 21:06:31

歌者文明清理员 发表于 2023-5-6 21:05
为什么为什么为什么为什么为什么

你一开始只回复了
a
抢第一没意思

歌者文明清理员 发表于 2023-5-6 21:06:58

陶远航 发表于 2023-5-6 21:06
你一开始只回复了

抢第一没意思

az
页: [1]
查看完整版本: 想把数据帧某列内容简化,请大师帮忙,谢谢