天道酬勤,学无止境

我如何比较两行并将两行的相似性存储在另一列中(how do i compare two rows and store the similarities of the two rows in another column)

问题

考虑我有一个名为 table_1 的表,如下所示

id               name          products_id
1                hi            1,2,3,4,5,6
2                hello         2,3,5,6
3                wow           5,6,9,10,13
4                total         1,2,5,6,9,13

现在我想比较 id=1 和 id=4 并在表中创建另一列,该列只有 products_id 中的值在两行中都相似(即 id=1 和 id=4)。

那么现在我如何在 MySQL 中执行此操作,并且我希望对所有行进行上述过程,并且相似性应存储在第 4 列(即相似性列)中。

我希望决赛桌看起来像

id                name           products_id        similarity
1                 hi             1,2,3,4,5,6        1,2,5,6
2                 hello          2,3,5,6            2,3,5,6
3                 wow            5,6,9,10,13        5,6,9,13
4                 total          1,2,5,6,9,13       1,2,5,6,9,13
回答1

我做了一些类似的处理逗号分隔的 ID 列表来模拟位掩码。 技巧是使用 like '%,id,% 进行连接(其中 id 是由 id 索引的表中的键)。 对于您的情况,我将 table_1 连接到一个有序整数表,结果包括 product_id 列中每个 id 的一行。

我为您请求的每个 id 执行一次此操作,并加入生成的派生表以查找公共表。

这是查询:

SELECT p1.id, p1.name name1,p2.name name2, GROUP_CONCAT(p1.N) similarities
FROM (
SELECT *
 FROM table_1 t1
JOIN sequence8 s8 on CONCAT(',',t1.product_ids,',') LIKE CONCAT('%,',s8.N,',%') 

WHERE t1.id =1
) p1
JOIN 
(
SELECT *
 FROM table_1 t1
JOIN sequence8 s8 ON CONCAT(',',t1.product_ids,',') LIKE CONCAT('%,',s8.N,',%') 

WHERE t1.id =4
) p2 ON p2.n = p1.n
GROUP BY p1.id
标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 除第一列之外的所有列的每两行的平均值(Average of every two lines for all columns except the first one)
    问题 我有一个看起来像这样的数据集: 项目 1 20 30 12 项目 1 10 50 17 item2 -9 112 15 item2 -9 100 10 实际数据集有 101 列。 我想打印每列中连续值的平均值(包含名称的第一列除外)。 所以预期的输出是 项目 1 15 40 14.5 item2 -9 106 12.5 我从这个链接中发现,我可以使用以下代码对单个列执行此操作 awk '{sum+=$2}(NR%2)==0{print sum/2; sum=0;}' 但是我无法弄清楚如何对其余列执行此操作并为平均值行打印唯一的行名称(例如:item1)。 我试过这样的事情: awk '{for(i=2;i<=NF;i++) sum[i]+=$i} NR%2==0 {print sum[i]/2;sum[i]=0}' 但代码显然不正确,如果有人能指出我做错了什么以及如何改进它以获得预期结果,我将不胜感激。谢谢! 回答1 对从第 2 行开始的连续行对求和,以获得动态数量的字段: $ awk 'NR>1{for(i=2;i<=NF;i++)a[i]+=$i;if(NR%2){printf "%s ",n$1;n="\n";for(i=2;i<=NF;i++)printf "%s ",a[i]/2;delete a}}' file item1 15 40 14.5 item2 -9
  • 如何在db列中存储列表(How to store a list in a db column)
    问题 我想将对象FOO存储在数据库中。 可以说FOO包含三个整数和一个“ Fruits ”列表。 该列表可以有任何长度,我唯一知道的是所有允许的结果都存储在另一个表中。 我可以将水果清单存储在列中吗? 回答1 在规范化的关系数据库中,这种情况是不可接受的。 您应该有一个联结表,该表为FOO对象的每个不同ID和Fruit的ID存储一行。 这样的行的存在意味着该水果在FOO的列表中。 CREATE TABLE FOO ( id int primary key not null, int1 int, int2 int, int3 int ) CREATE TABLE Fruits ( id int primary key not null, name varchar(30) ) CREATE TABLE FOOFruits ( FruitID int references Fruits (ID), FooID int references FOO(id), constraint pk_FooFruits primary key (FruitID, FooID) ) 要将Apple水果添加到ID = 5的特定FOO对象的列表中,您将: INSERT FOOFruits(FooID, FruitID) SELECT 5, ID FROM Fruits WHERE name = 'Apple'
  • 连接第一列中具有相同值的行(Join lines with the same value in the first column)
    问题 我有一个制表符分隔的文件,其中包含三列(节选): AC147602.5_FG004 IPR000146 Fructose-1,6-bisphosphatase class 1/Sedoheputulose-1,7-bisphosphatase AC147602.5_FG004 IPR023079 Sedoheptulose-1,7-bisphosphatase AC148152.3_FG001 IPR002110 Ankyrin repeat AC148152.3_FG001 IPR026961 PGG domain 我想使用bash来获得它: AC147602.5_FG004 IPR000146 Fructose-1,6-bisphosphatase class 1/Sedoheputulose-1,7-bisphosphatase IPR023079 Sedoheptulose-1,7-bisphosphatase AC148152.3_FG001 IPR023079 Sedoheptulose-1,7-bisphosphatase IPR002110 Ankyrin repeat IPR026961 PGG domain 因此,如果第一列中的ID在几行中相同,则应该为每个ID生成一行,并将所有其他部分合并在一起。 在示例中,它将给出两行文件。 回答1 尝试一下这种单线:
  • 如何使用R将一列中的值与上一个值进行比较?(How can I compare a value in a column to the previous one using R?)
    问题 我在R中有一个大型数据框,其中包含4列和数千行。 以下是第一行作为示例: ID V1 V2 Stimulus [1,] 001 74.80 803.0 0 [2,] 001 75.98 790.9 0 [3,] 001 75.95 791.1 0 [4,] 001 65.70 918.7 0 [5,] 001 59.63 1005.6 13 [6,] 001 59.44 1012.0 13 [7,] 001 59.62 1010.0 13 [8,] 001 63.85 942.4 13 [9,] 001 60.75 992.9 0 [10,] 001 59.62 1010.0 0 [11,] 001 61.68 974.0 0 [12,] 001 65.21 921.4 15 [13,] 001 59.23 1012.0 15 [14,] 001 61.23 979.5 15 [15,] 001 70.80 849.2 0 在此数据帧中,每行对应1秒。 第4列(刺激)为0(即无刺激)或大于0的正整数(即刺激数)。 刺激数字始终以一个或多个0值分隔)。 我想学习如何将第4列(刺激)中的每个数值与上一行中的值进行比较:从该比较中,我想在数据框中创建第5列,如果值是0,当值更改时(仅用于前2行/秒)为“ OK”,对于不同于0的其余数字行,为“ POST”,然后再次显示新的0值。
  • MySQL中INDEX,PRIMARY,UNIQUE,FULLTEXT之间的区别?(Differences between INDEX, PRIMARY, UNIQUE, FULLTEXT in MySQL?)
    问题 创建MySQL表时,PRIMARY,UNIQUE,INDEX和FULLTEXT有什么区别? 我将如何使用它们? 回答1 差异性 KEY或INDEX是指普通的非唯一索引。 允许使用索引的非唯一值,因此索引的所有列中可能包含具有相同值的行。 这些索引不会对您的数据施加任何限制,因此它们仅用于访问-用于快速访问某些记录范围而无需扫描所有记录。 UNIQUE引用索引,其中索引的所有行都必须是唯一的。 也就是说,对于该索引中的所有列,同一行可能不具有与另一行相同的非NULL值。 除了用于快速达到某些记录范围外,UNIQUE索引还可以用于对数据施加约束,因为数据库系统不允许在插入或更新数据时打破唯一值规则。 您的数据库系统可能允许将UNIQUE索引应用于允许NULL值的列,在这种情况下,如果两行都包含NULL值,则允许两行相同(此处的理由是NULL被视为不等于其自身)。 但是,根据您的应用程序,您可能会发现这种情况不受欢迎:如果希望防止这种情况,则应在相关列中禁止使用NULL值。 PRIMARY的行为与UNIQUE索引完全一样,不同之处在于它始终被命名为“ PRIMARY”,并且表上可能只有一个(并且应该总是一个;尽管某些数据库系统不强制执行此操作)。 PRIMARY索引旨在作为唯一标识表中任何行的主要手段,因此与UNIQUE不同,不应在允许NULL值的任何列上使用它。
  • 如何检测表中的冗余行?(How can I detect redundant rows in the table?)
    问题 我正在遵循此答案的解决方案#1 。 过一会儿,表中就会出现一些多余的行。 假设这个表: +------+------------------+ | user | cookie | +------+------------------+ | 1 | ojer0f934mf2... | | 2 | ko4398f43043... | | 2 | 34fjkg3j438t... | | 3 | 0243hfd348i4... | +------+------------------+ 当用户1删除浏览器的 cookie 时,数据库中仍然存在这一行: | 1 | ojer0f934mf2... | 当他打开我的网站时,他需要再次登录。 所以这是表: +------+------------------+ | user | cookie | +------+------------------+ | 1 | ojer0f934mf2... | -- now this row is useless anymore | 2 | ko4398f43043... | | 2 | 34fjkg3j438t... | | 3 | 0243hfd348i4... | | 1 | 0243hfd348i4... | +------+------------------+ 将来
  • 在另一列中总共存储了几个MySQL列?(Sum total of several MySQL columns stored in another column?)
    问题 我想在MySQL数据库中添加几列,并将其存储在另一列中: column1 column2 column3 subtotal 10 10 10 30 有没有办法做到这一点? 回答1 这个怎么样? UPDATE tableName SET subtotal = (column1 + column2 + column3) 更新1 如果您确实不需要表中的小计列,请使用query作为 SELECT *, (column1 + column2 + column3) as subtotal FROM tableName 演示版 回答2 update yourtable set subtotal = col1 + col2 + col3 回答3 如果仅更新小计,则必须保持其值-即,每次更新其他列之一时,您的代码也必须记住也要更新小计。 有两种方法可以解决此问题: 创建一个触发器,该触发器在更新行时触发。 此选项需要数据库“功夫”,并且其他人在查看触发器存在的表时都不会立即意识到创建一个进行计算的VIEW 我认为选项2是最好的方法。 这是您对视图进行编码的方式。 create view mytable_totalled as select col1, col2, col3, col1 + col2 + col3 as subtotal from mytable 创建视图后
  • jQuery如何将表格单元格从一列到另一列拆分为不同数量的行(jQuery how to split table cell into a different number of rows from column to column)
    问题 最初有一张只有一行和一定数量列的表。 我想问你是否有可能将每个单元格(td)分成给定的行数,从此列开始一直持续到最后一列 假设上面的表是我的原始表,并且在第一列中我决​​定将其分为两行,该除法也应适用于所有后续列 如您所见,将第一列分为两行,还将下一列分为两行。 然后,如果我选择将第二列分为两行,则此划分应仅适用于从第二列开始的列。 它不应该触摸第一列。 现在,我将再添加两个示例图像,以确保我清楚自己想要得到的东西。 现在,我已经描述了使用图像要实现的目标,我想问问您是否有可能这样做。 如果是这样,您认为您可以暗示我应该做什么或应该从哪里开始吗? 任何建议或指导将不胜感激。 附注:如果您认为问题标题与我在其中描述的内容不符,请随意编辑。 编辑:jsFiddle添加 也许我之前没有提到过,但是我真的是jQuery的新手。 但是,通过做一些研究,我能够想到这样的东西。 我知道代码很乱,但是至少可以让您更好地了解我所追求的。 在jsfiddle中,我在要拆分的列中放置了一个新表。 我使用这种方法是因为,老实说,我不知道如何进行其他任何操作。 也许现在有了这个jsfiddle,您将能够对如何改进它提出一些建议,或者也许可以对如何做提供更好的想法。 HTML代码: Number of Levels(Columns):<input type="text" id="nCols"/>
  • 如何从命令行将每两行合并为一个?(How to merge every two lines into one from the command line?)
    问题 我有一个具有以下格式的文本文件。 第一行是“ KEY”,第二行是“ VALUE”。 KEY 4048:1736 string 3 KEY 0:1772 string 1 KEY 4192:1349 string 1 KEY 7329:2407 string 2 KEY 0:1774 string 1 我需要与键在同一行中的值。 所以输出应该像这样... KEY 4048:1736 string 3 KEY 0:1772 string 1 KEY 4192:1349 string 1 KEY 7329:2407 string 2 KEY 0:1774 string 1 如果可以使用$或,这样的定界符会更好。 KEY 4048:1736 string , 3 如何将两行合并为一行? 回答1 awk: awk 'NR%2{printf "%s ",$0;next;}1' yourFile 注意,输出末尾有一个空行。 但: sed 'N;s/\n/ /' yourFile 回答2 paste对这项工作有好处: paste -d " " - - < filename 回答3 替代sed,awk,grep: xargs -n2 -d'\n' 当您要连接N行并且仅需要用空格分隔的输出时,这是最佳方法。 我最初的答案是xargs -n2 ,它以单词而不是行分开。
  • 如何从视图中删除“重复”行?(How do I remove “duplicate” rows from a view?)
    问题 当我加入主表时,我有一个工作正常的视图: LEFT OUTER JOIN OFFICE ON CLIENT.CASE_OFFICE = OFFICE.TABLE_CODE. 但是我需要添加以下连接: LEFT OUTER JOIN OFFICE_MIS ON CLIENT.REFERRAL_OFFICE = OFFICE_MIS.TABLE_CODE 尽管我添加了DISTINCT ,但我仍然得到一个“重复”行。 我说“重复”是因为第二行有不同的值。 但是,如果我将LEFT OUTER更改为INNER JOIN ,我将丢失具有这些“重复”行的客户端的所有行。 我究竟做错了什么? 如何从我的视图中删除这些“重复”行? 笔记: 这个问题在这种情况下不适用: 如何删除重复的行? 回答1 如果行有任何不同的列,DISTINCT 将无济于事。 显然,您要加入的其中一个表在另一个表中的一行中有多个行。 要恢复一行,您必须消除要加入的表中的其他多行。 最简单的方法是增强您的 where 子句或 JOIN 限制,使其仅加入您想要的单个记录。 通常这需要确定一个规则,该规则将始终从另一个表中选择“正确”的条目。 让我们假设您有一个简单的问题,例如: Person: Jane Pets: Cat, Dog 如果您在此处创建简单联接,您将收到 Jane 的两条记录: Jane|Cat Jane
  • 会计数据库 - 存储交易(Accounting Database - storing a transaction)
    问题 您制作了一个游戏网站,用户可以在其中购买游戏积分,并将资金存入/贷记到用户的虚拟帐户中以玩一些游戏等......等等。 1 如果你有一个会计师来记录交易,它会像这样记录(可能有点复杂,但你明白了) TRANSACTION PK_ID1 Cash - $10 (System) PK_ID2 Deposit $10 (System) TRANSACTION PK_ID3 Bank Account - $10 (John) PK_ID4 Deposit $10 (John) 2 作为开发者,你真的需要浪费2条额外的记录吗? 为什么不直接这样记录……(那么你可能会存储资金来自哪里的信息,在同一存款记录下的其他列中的状态) TRANSACTION PK_ID1 Cash - $10 (system) PK_ID2 Deposit $10 (John) 选项#1 比选项#2 和副签证有什么真正的优势吗? 编辑:修改问题,删除 CR、DR 并替换为符号。 回答1 (回答您的问题,但也回答了 paxdiablo 的回答中提出的一些观点。) 这与查看您的数据库的会计师无关。 双重输入,错误易于追踪; 这是会计和国税局的要求,所以实际上,您别无选择,任何处理公共资金的系统都需要复式。 (请不要试图告诉我“复式”是什么;我已经为银行编写了复式系统,以满足审计要求。)复式是一种基于一组帐户的会计方法
  • JOIN和UNION有什么区别?(What is the difference between JOIN and UNION?)
    问题 JOIN和UNION什么区别? 我可以举个例子吗? 回答1 UNION放置查询的行,而JOIN生成笛卡尔乘积并将其子集化-完全不同的操作。 平凡的UNION示例: mysql> SELECT 23 AS bah -> UNION -> SELECT 45 AS bah; +-----+ | bah | +-----+ | 23 | | 45 | +-----+ 2 rows in set (0.00 sec) JOIN相似性平凡示例: mysql> SELECT * FROM -> (SELECT 23 AS bah) AS foo -> JOIN -> (SELECT 45 AS bah) AS bar -> ON (33=33); +-----+-----+ | foo | bar | +-----+-----+ | 23 | 45 | +-----+-----+ 1 row in set (0.01 sec) 回答2 联接和联合可用于合并一个或多个表中的数据。 不同之处在于数据的组合方式。 简而言之,联接将数据合并到新列中。 如果将两个表连接在一起,则来自第一张表的数据将显示在同一列中的第二列的同一列中。 联合将数据合并到新行中。 如果将两个表“联合”在一起,则来自第一个表的数据位于一组行中,而来自第二个表的数据位于另一组行中。 这些行的结果相同。 这是联接的视觉描述。
  • MySQL索引如何工作?(How do MySQL indexes work?)
    问题 我对MySQL索引的工作方式非常感兴趣,更具体地说,它们如何在不扫描整个表的情况下返回所请求的数据? 我知道这是题外话,但是如果有人可以向我详细解释这一点,我将非常感谢。 回答1 基本上,表上的索引的作用类似于书中的索引(这就是名称的来源): 假设您有一本关于数据库的书,并且想要查找有关存储的信息。 没有索引(假设没有其他帮助,例如目录),则必须逐页浏览页面,直到找到主题为止(这是full table scan )。 另一方面,索引包含一个关键字列表,因此您可以查阅该索引,并在第113-120,231和354页上看到storage 。然后,您可以直接翻到这些页面,而无需进行搜索(即使用索引,速度更快)。 当然,索引的有用程度取决于很多事情-使用上面的比喻的几个例子: 如果您有一本关于数据库的书并为“数据库”一词建立了索引,您会发现它在第1-59,61-290页和第292至400页中提到。在这种情况下,索引并没有太大帮助,并且可能更快地一页一页地浏览页面(在数据库中,这是“选择性差”)。 对于一本10页的书,建立索引是没有意义的,因为您可能最终得到一本10页的书,并以5页的索引为前缀,这很愚蠢-只需扫描10页并完成即可。 索引也需要有用-通常没有指向索引的位置,例如每页字母“ L”的频率。 回答2 您必须知道的第一件事是索引是一种避免扫描整个表以获得所需结果的方法。
  • 根据另一列中自动完成的结果更改 jqGrid 文本列的可编辑属性(Changing a jqGrid text column's editable property based on results of an autocomplete in another column)
    问题 我正在使用带有内联编辑的 jqGrid 4.4.0。 为了这个问题,我的网格有四列:一个 ID 列 (SomeGridRowId)、一个带有 jQ​​uery 自动完成功能的文本列 (Autocomplete)、一个单字符文本列 (SingleChar) 和一个隐藏的boolean列 (CanEditSingleChar)。 我需要根据CanEditSingleChar列的值启用或禁用单字符列的编辑。 我已经使用onSelectRow和setColProp处理现有行,但由于某种原因,我无法让它在新插入的行上正确运行。 如果我添加一个新行并从自动完成中选择一个值,则SingleChar列始终不可编辑。 我已经使用 Chrome 和 IE 开发人员工具逐步完成了 Javascript; 列值和属性设置正确,但SingleChar列的editable属性并未反映这一点。 我为巨大的代码片段道歉,但我不想遗漏任何东西。 $("#coolGrid").jqGrid({ url: '@Url.Action("GetCoolGridData")', postData: { someId: function () { return $("#someId").val(); }, otherStaticArg: function () { return 1; } }, datatype:
  • 表单上的应用程序脚本如何将额外的数据存储到工作表中?(How can an apps-script on a Form store extra data into the Sheet?)
    问题 问:附加到窗体的AppsScript如何将额外的数据存储到工作表中? 情况:我们有一个(很长的)Google表单,可以将许多数据存储到Google表格中。 通常,条目需要进行编辑,与使用原始表单进行编辑相比,直接尝试在工作表中进行编辑要容易得多。 (其中一些项目是文本,长几个段落。)我想在电子表格中存储另一条数据,尤其是URL,编辑者可以使用该URL来编辑表单中的行条目。 我已经可以获取所有表单数据,并且可以使用formResponse.getEditResponseUrl()获得正确的URL。 我可以通过电子邮件将所有内容发送给用户,通常是收集所有表单条目的编辑。 (由于在StackOverflow中提供了许多有用的答案,这使我走了这一步!)但是编辑器必须手动将URL复制并粘贴到电子表格正确行的另一列中。 我在Sheet类中看到一个接口,可以在电子表格中添加一列,但是我看不到如何为表单刚刚存储的特定行填充该额外的列。 我们已手动添加了该列,并验证了通过表格进行编辑时Google不会覆盖该列。 如何将一小部分数据存储到工作表中? 我想念什么? 任何帮助将不胜感激。 谢谢。 [补充说明2015-02-06] 我们有一个很长的表格,有人可以提交,其他人可以编辑。 编辑是使用表单完成的,而不是直接在电子表格中进行的,因此我们需要允许编辑者重新编辑响应的URL。
  • MySQL中的键,主键,唯一键和索引之间的区别(Difference between Key, Primary Key, Unique Key and Index in MySQL)
    问题 我什么时候应该使用KEY , PRIMARY KEY , UNIQUE KEY和INDEX ? 回答1 KEY和INDEX是MySQL中的同义词。 他们是同一回事。 在数据库中,您将使用索引来提高数据检索的速度。 通常在JOIN , WHERE和ORDER BY子句中使用的列上创建索引。 假设您有一个名为users的表,并且您要搜索姓氏为'Smith'的所有用户。 没有索引,数据库将不得不遍历表的所有记录:这很慢,因为数据库中拥有的记录越多,查找结果所要做的工作就越多。 另一方面,索引将帮助数据库快速跳至保存“史密斯”记录的相关页面。 这与我们人类如何通过电话簿目录查找姓氏的方式非常相似:只要我们以某种顺序插入信息,我们就不会开始从头到尾搜索目录。用于快速跳至“ S”页面。 主键和唯一键相似。 主键是一列或列的组合,可以唯一地标识一行。 这是唯一密钥的特例。 一个表最多可以有一个主键,但可以有多个唯一键。 当您在列上指定唯一键时,表中的两个不同行都不能具有相同的值。 还要注意,定义为主键或唯一键的列在MySQL中会自动建立索引。 回答2 KEY和INDEX是同义词。 当性能测量时,您应该添加一个索引,并且EXPLAIN向您显示由于缺少索引而导致查询效率低下。 添加索引可以提高查询的性能(但是它可以减慢对表的修改)。 当您要限制该列(或多个列)中的值唯一时,应使用UNIQUE
  • 如何在android中动态绘制一条线[重复](How to draw a line dynamically in android [duplicate])
    问题 这个问题在这里已经有了答案: 9年前关闭。 可能的重复: 如何在android中画一条线 我必须匹配两个选项,就像我们使用铅笔匹配列一样。 如果我单击一列中的一行并将该行与另一列中的其他合适行匹配,则应在两行之间动态绘制该线。 首先,我使用了拖放功能。 但是这样我就不能动态画线了。这怎么可能? 请给我建议。 回答1 获取行元素的Touch Events ,如果它们匹配,则使用以下代码绘制水平线: canvas.drawLine(10, 10, 90, 10, paint); canvas.drawLine(10, 20, 90, 20, paint); 编辑:请参阅如何在 android 中绘制一条线 回答2 使用 MapView 中的投影将 GeoPoints 转换为“屏幕”点。 之后,您可以使用 Path 绘制所需的线条。 第一个点应该用 path.moveTo(x, y) 指定,其余的用 path.lineTo(x, y) 指定。 最后你调用 canvas.drawPath(path) 就完成了。 下面是我的 draw() 方法中的一个代码,它围绕一组点绘制一个多边形。 请注意,您不必像我在代码中所做的那样使用 path.close()。 public void draw(android.graphics.Canvas canvas, MapView mapView
  • 如何匹配两行并减去它们[关闭](how to match two lines and subtract them [closed])
    问题 关闭。 这个问题需要细节或清晰度。 它目前不接受答案。 想改善这个问题吗? 通过编辑此帖子添加详细信息并澄清问题。 7年前关闭。 改进这个问题 我有一个包含两列的文件,我想将第二列与第二列中的每个值匹配,如果它们匹配,则从第一列的两个匹配值的第一列中减去第一列 7.788244 0 7.800744 1 7.813244 2 7.825744 3 7.838244 4 7.850744 5 7.863244 6 7.875744 7 7.888244 8 7.900744 9 7.913244 10 7.925744 11 7.938244 12 7.950744 13 7.963244 14 7.975744 15 7.801751 0 7.814251 1 7.826751 2 7.839251 3 7.851751 4 7.864251 5 7.876751 6 7.889251 7 7.901751 8 7.914251 9 7.926751 10 7.939251 11 7.951751 12 7.964251 13 7.976751 14 7.989251 15 例子 0.013507 0.013507 0.013507 回答1 您可以执行以下操作: awk '{a[$2]?b[++i]=$1-a[$2]:a[$2]=$1}END{for(;x<length(b)
  • Pandas / Python:根据另一列中的值设置一列的值(Pandas/Python: Set value of one column based on value in another column)
    问题 我需要基于Pandas数据框中的另一列的值来设置一列的值。 这是逻辑: if df['c1'] == 'Value': df['c2'] = 10 else: df['c2'] = df['c3'] 我无法做到这一点,我想要做的就是简单地创建一个具有新值的列(或更改现有列的值:任何一个都对我有用)。 如果我尝试运行上面的代码,或者将其编写为函数并使用apply方法,则会得到以下信息: ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 回答1 一种方法是将索引与.loc一起使用。 例子 在没有示例数据框的情况下,我将在此处进行补充: import numpy as np import pandas as pd df = pd.DataFrame({'c1': list('abcdefg')}) df.loc[5, 'c1'] = 'Value' >>> df c1 0 a 1 b 2 c 3 d 4 e 5 Value 6 g 假设您想创建一个新列c2 ,除了c1是Value之外,它等效于c1 ,在这种情况下,您希望将其分配给10: 首先,您可以使用以下两行之一创建一个新列c2 ,并将其设置为与c1等效
  • 使用“TO”和“STEP”理解VBA代码(Understanding VBA code using “TO” and “STEP”)
    问题 我得到了这段代码以在 excel 中运行,但我试图理解它的含义。 我特别想知道可变部分? 任何帮助将不胜感激。 sub SortNames Dim LR As Long Application.ScreenUpdating = False Sheets("Stores").Select LR = Cells(Rows.Count, 1).End(xlUp).Row For i = LR To 2 Step -1 'Here is where you can add the names If Range("f" & i) <> "Amanda Weaver" And Range("f" & i) <> "Debra Wiesemann" And _ Range("f" & i) <> "Drew Simpson" And Range("f" & i) <> "James Howard" And _ Range("f" & i) <> "Jeff Hruby" And Range("f" & i) <> "Jessica Czupryn" And _ Range("f" & i) <> "Kevin Janke" And Range("f" & i) <> "Matthew Hudspeath" And _ Range("f" & i) <> "Maurey Peterson"