- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是问题 of this 的后续问题我有一个数据框如下:
KPI Tata JSW scope BIC Peer BIC_diff Avg_diff
0 Gross Margin % 0.5820 0.4760 Max 0.582 0.268 0 0.313
2 SG&A/Revenue 0.1410 0.0300 Min 0.029 0.0645 0.112 0.0765
3 ROA 0.0640 0.0930 Max 0.093 0.0457 -0.029 0.0183
4 ROE 0.1380 0.2430 Max 0.243 0.1024 -0.105 0.0356
5 Inventory Turnover 2.2000 3.2700 Min 1.71 3.892 0.49 -1.692
6 Current Ratio 0.9000 0.8000 Min 0.5 1.15 0.4 -0.25
现在我想添加另一列,其单元格值以 df['scope']
、df['BIC_diff']
和 df[ 为条件'Peer_diff']
。所以结果列如下所示。基本条件如下:
cond_comments = [(df['scope']=='Max') & (df['BIC_diff'] > 0) & (df['Avg_diff'] > 0),
(df['scope']=='Max') & (df['BIC_diff'] <= 0) & (df['Avg_diff'] <= 0),
(df['scope']=='Max') & (df['BIC_diff'] <= 0) & (df['Avg_diff'] > 0),
(df['scope']=='Min') & (df['BIC_diff'] > 0) & (df['Avg_diff'] > 0),
(df['scope']=='Min') & (df['BIC_diff'] <= 0) & (df['Avg_diff'] <= 0),
(df['scope']=='Min') & (df['BIC_diff'] > 0) & (df['Avg_diff'] <= 0)]
根据上述条件,我尝试添加另一个名为 comments
的列,如下所示。想法是将注释内相关位置的 KPI
列文本与 BIC_diff
和 Peer_diff
中的值连接
.
KPI BIC Peer BIC_diff Avg_diff comments
Gross Margin % 0.582 0.268 0 0.313 Gross Margin is better than peer by 31.3% ## <-- `Gross Margin is from KPI. 31.3% is from Avg_diff.
SG&A/Revenue 0.029 0.0645 0.112 0.0765 There is a scope of improvement for SG&A/Revenue by at least 7.65% ## <-- SG&A is taken from KPI. 7.65% is taken from Avg_diff.
ROA 0.093 0.0457 -0.029 0.0183 There is a scope of improvement for ROA by 2.90% ## <-- ROA is from KPI. 2.90% is taken from BIC_diff absolute value.
ROE 0.243 0.1024 -0.105 0.0356 There is a scope of improvement for ROE by 10.50%
Inventory Turnover 1.71 3.892 0.49 -1.692
Current Ratio 0.5 1.15 0.4 -0.25
为了实现上述目标,我尝试了以下方法:
cond_comments = [(df['scope']=='Max') & (df['BIC_diff'] > 0) & (df['Avg_diff'] > 0),
(df['scope']=='Max') & (df['BIC_diff'] <= 0) & (df['Avg_diff'] <= 0),
(df['scope']=='Max') & (df['BIC_diff'] <= 0) & (df['Avg_diff'] > 0),
(df['scope']=='Min') & (df['BIC_diff'] > 0) & (df['Avg_diff'] > 0),
(df['scope']=='Min') & (df['BIC_diff'] <= 0) & (df['Avg_diff'] <= 0),
(df['scope']=='Min') & (df['BIC_diff'] > 0) & (df['Avg_diff'] <= 0)]
vals_comments = ['{0} is better than BIC and peer by {1} and {2} respectively'.format(df['KPI'],df['BIC_diff'],df['Avg_diff']),
'{0} has scope of improvement by atleast {1}'.format(df['KPI'],df['Avg_diff']),
'While {0} is better than its peer, still there is a scope of improvement by {1}'.format(df['KPI'],df['BIC_diff']),
'{0} has scope of improvement by atleast {1}'.format(df['KPI'],df['Avg_diff']),
'{0} is better than BIC and peer by {1} and {2} respectively'.format(df['KPI'],df['BIC_diff'],df['Avg_diff']),
'While {0} is better than its peer, still there is a scope of improvement by {1}'.format(df['KPI'],df['BIC_diff'])]
df['Comments'] = pd.np.select(cond_comments, vals_comments,default='No Comment')
但是,上面的代码没有生成我上面列出的注释。
感谢任何帮助。
PS:请原谅任何可能的格式错误。
最佳答案
我将创建一个函数,首先执行所有条件,然后按行应用它。这样就可以更轻松地添加新条件并查看什么条件会导致什么结果。
def create_comment(line: dict) -> str:
# column values are accessible as in a dictionary
if (line['scope']=='Max') and (line['BIC_diff'] > 0) and (line['Avg_diff'] > 0):
return '{0} is better than BIC and peer by {1} and {2} respectively'.format(line['KPI'],line['BIC_diff'],line['Avg_diff'])
elif (line['scope']=='Max') and (line['BIC_diff'] <= 0) and (line['Avg_diff'] <= 0):
return '{0} has scope of improvement by at least {1}'.format(line['KPI'],line['Avg_diff'])
### Insert the remaining conditions below
else:
return 'No Comment'
# Then apply with axis=1 to do it row-wise
df['Comments'] = df.apply(create_comment, axis=1)
关于python - Pandas:根据多个条件生成句子并将其显示在单独的列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58637847/
假设我有一个数据集,每行包含一个句子,该句子来自一个非常大的调查(德语和法语)中的一个开放式问题。大多数句子(答案)是合乎逻辑的;即有意义的单词组合。但是,也有一些粗心的受访者只是简单地填写了各种不合
我的 MySQL 数据库中有一个表,其结构如下: CREATE TABLE `papers` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varch
在新的 Edge 浏览器(基于 chromium)中,有一个文本到语音的选项,在阅读页面时它会突出显示正在阅读的句子和单词,就像这样 - 过去我有一个简单的 Windows TTS 应用程序,我通过将
我有一本书的图像文件。我正在编写一个 Web 应用程序,用于加载书籍并一次显示一页。我想知道如何在页面中选择一个句子并显示一条消息。据我所知,它必须具有图像坐标。 请参阅http://epaper.d
我使用的 GPS 输出多个 NMEA 语句,可用于定位数据。 (GPGGA 和 GPRMC)。有什么理由我应该使用一个而不是另一个吗?我应该检查它们并比较数据吗?我可以随便挑一个使用吗? 在这一点上,
我想使用TinyGPS++在 Arduino 上解析 NMEA 数据并在 OLED 显示屏上显示信息。但是,NMEA 数据将通过 USB 接收,而不是使用软件串行和 TX/RX 引脚。 我按照 Tin
我需要删除其中的所有空格。 例如:这是我的代码O/P:Thisismycode 这是我到目前为止的代码。 import java.util.Scanner; public class nospace{
我对 python 很陌生,我不知道如何解决以下问题: 我有两个数据框,我想使用某种 VLOOKUP 函数来将句子与特定关键字相匹配。在下面的示例中,(df1) 3e 句子应与“banana”(df2
这个问题已经有答案了: How slicing in Python works (38 个回答) Python list slice syntax used for no obvious reason
我想在我的表格作者的句子列中找到以 # 开头的单词。我不知道我在寻找什么词,因为我只知道它以 # 开头。 表:作者(姓名,句子) 作者 |句子 艾伯特 |我#want to be #discussin
句子
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve
我目前正在经历免费代码营的第一个 JS 挑战。 我在标题为“句子首字母大写”的挑战中遇到了问题。在这个挑战中,我需要编写一个函数,将给定字符串中单词的每个第一个字母大写,并将所有其他字母小写。 Her
假设我有一个文本,看起来像这样: Some sentence in which a fox jumps over some fence. Another sentence in which a
我是 C++ 的初学者,我想了解有关字符的更多信息,但我遇到了问题。我试图制作一个程序,它复制一个句子并在空格 (' ') 之间添加一个新行 ('\n'),就像一个单词一个单词地分开一个句子. int
我需要将一个句子(例如“Hello world”)复制到一个字符串列表中,意思是复制到一个字符数组中,其中每 2 个单词由 '\0' 分隔。请注意,单词被定义为一行中没有空格的任意数量的字符。 因此,
我有这样一个字符串, my_str ='·in this match, dated may 1, 2013 (the "the match") is between brooklyn centenni
我在列表中有一堆句子,我想使用 nltk 库来阻止它。我可以一次提取一个句子,但是我在从列表中提取句子并将它们重新组合在一起时遇到了问题。我缺少一个步骤吗? nltk 库很新。谢谢! import n
我有一个词和文本。我必须找到所有包含该词的提案。你有什么想法吗? piblic List GetSnetences(string word) { // search all proposals
我正在通过 doc2vec 模型使用 gensim 库在 Python 中构建 NLP 聊天应用程序。我有硬编码的文档并给出了一组训练示例,我通过抛出用户问题来测试模型,然后第一步找到最相似的文档。在
我有以下代码,每 10 个单词拆分一行。 #!/bin/bash while read line do counter=1; for word in $line do
我是一名优秀的程序员,十分优秀!