如何分割熊猫系列中每个元素的不同部分?

时间:2020-08-22 01:03:18

标签: python pandas dataframe series

我有一个看起来像这样的系列:

0     15022$33.24%15.0k
1       15022$9.31%4.2k
2       15022$8.19%3.7k
3       15022$8.17%3.7k
4       15022$7.57%3.4k
5       5746$12.71%5.7k
6       5083$11.25%5.1k
7       5027$11.12%5.0k
8        5027$6.13%2.8k
9        5027$4.99%2.3k
10      4601$10.18%4.6k
11       3771$8.34%3.8k
12       3089$6.83%3.1k
13       3089$4.95%2.2k
14      3089$1.88%850.0
15       1673$3.70%1.7k
16       1184$2.62%1.2k
17           1$0.00%1.0
Name: Amount, dtype: object

美元符号前的第一个数字是整数值,然后是百分比,最后是相同值的缩写形式。

我正在尝试将此Series放入一个DataFrame中,每个值都有自己的列(整数值,百分比和缩写形式)。

这是使用Google表格的DataFrame的示例解决方案:

0   Whole   Percent Abbreviated num.
1   15022   33.24   15.0k
2   15022   9.31    4.2k
3   15022   8.19    3.7k
4   15022   8.17    3.7k
5   15022   7.57    3.4k

谢谢!

2 个答案:

答案 0 :(得分:3)

不确定这是否理想,但请对每行进行拆分

s = pd.Series(index=[1,2,3],data=['15022$33.24%15.0k','15022$9.31%4.2k','15022$8.19%3.7k'], name='Amounts')
s.str.split('\$|%', expand=True)

你得到

       0      1      2
1  15022  33.24  15.0k
2  15022   9.31   4.2k
3  15022   8.19   3.7k

它是一个数据框,重命名列。

答案 1 :(得分:3)

仅根据您显示的示例,您可以尝试以下内容吗?

import pandas as pd
import numpy as np


df=pd.Series(data=['15022$33.24%15.0k','15022$9.31%4.2k','15022$8.19%3.7k','15022$8.17%3.7k'], name='Amounts')
df=df.str.split('\$|%', expand=True)
df.columns = ["Whole","Percent","Abbreviated num."]
df.insert(0, "0", df.index+1, True) 
df