簡體   English   中英

使用Python在csv(數據框)中提取特定的字符串數據

[英]Extract specific string data in csv (data frame) using Python

我使用Python將CSV文件讀取為DataFrame,我不知道如何編寫代碼來提取數字,例如“interval”后面的21和35,條件為“win”。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM