gpt4 book ai didi

python - 使用Python提取csv(数据框)中的特定字符串数据

转载 作者:行者123 更新时间:2023-11-28 17:09:19 28 4
gpt4 key购买 nike

我使用 Python 将 CSV 文件读取为 DataFrame,我不知道如何编写代码来提取数字,例如21和35在“间隔”后面,条件是“赢”。

import pandas as pd
order = pd.read_csv('C:/Users/Desktop/order.csv')
order.rate.str.extractall(interval)

这是一个示例数据:

id  status                     rate

1, good, {"id": 101, "win": {"interval": 21, "pay_rate": 0.239}}

2, good, {"id": 1892, "win": {"interval": 35, "pay_rate": 0.769}}

3, bad, {"id": 153, "lose": {"interval": 39, "pay_rate": 0.369}}

最佳答案

根据我的经验,当从 csv 读取时,您的 dict 列是字符串,因此我们需要先使用 ast 中的 literal_eval 将其转换回,然后我们需要执行以下操作步骤

s=df.rate.apply(pd.Series).set_index('id').stack().apply(pd.Series)
s
Out[289]:
interval pay_rate
id
101 win 21.0 0.239
1892 win 35.0 0.769
153 lose 39.0 0.369

然后我们需要切出你需要的条件

s.loc[(slice(None),'win'),:].interval
Out[301]:
id
101 win 21.0
1892 win 35.0
Name: interval, dtype: float64

数据:

from ast import literal_eval

df=pd.DataFrame({'id':[1,2,3],'status':['good','good','bad'],'rate':['{"id": 101, "win": {"interval": 21, "pay_rate": 0.239}}','{"id": 1892, "win": {"interval": 35, "pay_rate": 0.769}}','{"id": 153, "lose": {"interval": 39, "pay_rate": 0.369}}']})
df['rate'] = df['rate'].apply(literal_eval)

关于python - 使用Python提取csv(数据框)中的特定字符串数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48796635/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com