【问题标题】:How to slice different parts of each element in a Pandas Series?如何对 Pandas 系列中每个元素的不同部分进行切片?
【发布时间】:2023-03-21 10:49:01
【问题描述】:

我有一个如下所示的系列:

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

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

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

这是使用 google sheet 的 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

提前致谢!

【问题讨论】:

  • 欢迎来到 SO,您能否在您的问题中发布预期输出示例,然后让我们知道。
  • @RavinderSingh13 我附上了示例解决方案的链接,希望对您有所帮助。
  • 抱歉,不鼓励在 SO 上链接到图像。请在您问题的代码标签中以文本格式发布示例,然后让我们知道。
  • 谢谢你告诉我,我不知道。我将其更改为文本格式,如果需要澄清其他内容,请告诉我。谢谢!

标签: python pandas dataframe series


【解决方案1】:

不确定这是否理想,但对每一行应用拆分

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

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

【讨论】:

    【解决方案2】:

    您能否尝试以下操作,仅基于您显示的示例。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-26
      • 2013-08-03
      • 1970-01-01
      • 2021-09-12
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      相关资源
      最近更新 更多