2016-05-05 2 views
0

У меня есть столбец в моей dataframe, который содержит строку строки, такие как:Как извлечь числовую информацию из строки в Pandas?

'(0.0,0.8638888888888889,3.7091666666666665,12.023333333333333,306.84694444444443)' 

Этот выход (производства другой программой) соответствует мин, 25, медиана, 75-й и максимум для данной переменной.

Я хотел бы, чтобы извлечь эту информацию, и поместить их в отдельные числовых колонн, таких как

min p25 p50 
0.0 0.864 3.70 

Данные, у меня действительно большой. Как я могу это сделать в Пандах?

Большое спасибо!

+0

Просьба указать код, который вы пробовали, и проблемную зону. – pmaniyan

+0

Это панды или питон? –

+2

Не будет ли это просто 'df [['min', 'p25', 'p50']] = df ['col']. Apply (lambda x: pd.Series (x [0], x [1] , х [2])) '? Также, что вы показали, это кортеж с целыми числами, но ваш заголовок говорит строки, что это? Можете ли вы отправить исходные данные и код – EdChum

ответ

1

IIUC то должно работать:

In [280]: 
df = pd.DataFrame({'col':['(0.0,0.8638888888888889,3.7091666666666665,12.023333333333333,306.84694444444443)']}) 
df 

Out[280]: 
               col 
0 (0.0,0.8638888888888889,3.7091666666666665,12.... 

In [297]: 
df[['min','p25','p50']] = df['col'].str.replace('\'|\(|\)','').str.split(',', expand=True).astype(np.float64)[[0,1,2]] 
df 

Out[297]: 
               col min  p25  p50 
0 (0.0,0.8638888888888889,3.7091666666666665,12.... 0.0 0.863889 3.709167 

Так что это заменяет '( и ) символы с заготовкой с помощью str.replace, а затем мы разделили с помощью str.split на запятой и брось тип плавать, а затем индексировать cols интереса.

Смежные вопросы