【问题标题】:create string using dataframe values使用数据框值创建字符串
【发布时间】:2020-10-08 04:49:56
【问题描述】:

数据框有

段 |百分比变化

段 1 | 25%

段 2 | 30%

段 3 | 40%

我需要为前 3 名创建句子:

“Segment3 的百分比变化最高,为 40%”

“Segment2 的百分比变化第二高,为 30%”

“Segment1 的百分比变化第三高,为 25%” “第 1 段的变化比第 2 段多 5%” “第 2 段的变化比第 3 段多 10%”

所有这些句子将作为新数据框中的每个单元格值添加。 感谢您的帮助!!

【问题讨论】:

  • 你的句子结构会不会一样?????
  • 是的,我可能会添加一些其他句子,但句子结构会相同

标签: python python-3.x pandas string dataframe


【解决方案1】:

用途:

#converted column with percentage to numeric
df['num'] = df['percentage_change'].str.rstrip('%').astype(float)
#get 3top rows by numeric column
df1 = df.nlargest(3, 'num')
#create difference column converted to strings
df1['diff'] = df1['num'].diff(-1).fillna(0).astype(str).str.replace('\.[0]*','') + '%'
#shifting segment column
df1['diff_seg'] = df1['segment'].shift(-1)
#default index strating by 1
df1 = df1.reset_index(drop=True)
df1.index = df1.index + 1
print (df1)
    segment percentage_change   num diff  diff_seg
1  segment3               40%  40.0  10%  segment2
2  segment2               30%  30.0   5%  segment1
3  segment1               25%  25.0   0%       NaN

然后使用f-strings 来格式化新列:

f1 = lambda x: f'{x["segment"].title()} has {x.name}. highest percentage change of {x["percentage_change"]}'
f2 = lambda x: f'{x["diff_seg"].title()} has {x["diff"]} more change than {x["segment"]}'
df1['out'] = df1.apply(f1, axis=1)
df1['out1'] = df1.iloc[:-1].apply(f2, axis=1)
print (df1)
    segment percentage_change   num diff  diff_seg  \
1  segment3               40%  40.0  10%  segment2   
2  segment2               30%  30.0   5%  segment1   
3  segment1               25%  25.0   0%       NaN   

                                                out  \
1  Segment3 has 1. highest percentage change of 40%   
2  Segment2 has 2. highest percentage change of 30%   
3  Segment1 has 3. highest percentage change of 25%   

                                         out1  
1  Segment2 has 10% more change than segment3  
2   Segment1 has 5% more change than segment2  
3                                         NaN  

【讨论】:

  • 先生,非常感谢您的帮助,但我需要知道您如何将所有字符串放在新数据帧的不同单元格中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 2012-11-22
相关资源
最近更新 更多