- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个经常更新的 Excel 电子表格(每天 2-3 次)。此更新需要运行索引匹配以从另一个电子表格的表中提取值并将它们写入第一个电子表格中的列。这些值会覆盖旧值,而不是创建新列。
我想使用 pandas 自动化这个过程(和 xlwings 将数据写入电子表格,但我对那部分没有任何问题)。第一步是用 pandas 复制 excel 的 INDEXMATCH()。总的来说,该功能应该:
##Index Match in Python with pandas
#Remember that dataframes start at 0, excel starts at 1
#This only works if both DFs have the same indices (integers, strings, whatever)
import numpy as np
import pandas as pd
#sample dataframes
d = {'Match Column' : [0.,1.,2.,3.,4.,7.,'string'],
'Read Column' : ['zero','one','two','three','four','seven','string']}
dfRead = pd.DataFrame(d)
d2 = {'Match Column' : [0.,1.,2.,3.,4.,5.,6.,7.,'8'],
'Write Column' : [0,0,0,0,0,0,0,0,'0']}
dfWrite = pd.DataFrame(d2)
#test arguments
ReadColumn = 'Read Column'
WriteColumn = 'Write Column'
ReadMatchColumn = 'Match Column'
WriteMatchColumn = 'Match Column'
def indexmatch(dfRead, dfWrite, ReadColumn, WriteColumn, ReadMatchColumn, WriteMatchColumn, skiprows=0):
#convert the string inputs to a column number for each dataframe
RCNum = np.where(dfRead.columns == ReadColumn)[0][0]
WCNum = np.where(dfWrite.columns == WriteColumn)[0][0]
RMCNum = np.where(dfRead.columns == ReadMatchColumn)[0][0]
WMCNum = np.where(dfWrite.columns == WriteMatchColumn)[0][0]
for i in range(skiprows,len(dfWrite.index),1):
match = dfWrite.loc[dfWrite.index[i]][WMCNum] #the value we're using to match the columns
try:
matchind = dfRead.index[np.where(dfRead[ReadMatchColumn] == match)[0][0]]
value = dfRead.fillna('#N/A').loc[matchind][RCNum] #replaces DF NaN values with excel's #N/A, optional method
dfWrite.set_value(dfWrite.index[i],WriteColumn,value)
except KeyError:
dfWrite.set_value(dfWrite.index[i],WriteColumn,np.nan) #if there is no match, write NaN to the 'cell'
except IndexError:
dfWrite.set_value(dfWrite.index[i],WriteColumn,np.nan)
In [2]: dfRead
Out[2]:
Match Column Read Column
0 0 zero
1 1 one
2 2 two
3 3 three
4 4 four
5 7 seven
6 string string
In [3]: dfWrite
Out[3]:
Match Column Write Column
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
In [4]: indexmatch(dfRead, dfWrite, 'Read Column', 'Write Column', 'Match Column', 'Match Column')
In [5]: dfWrite
Out[7]:
Match Column Write Column
0 0 zero
1 1 one
2 2 two
3 3 three
4 4 four
5 5 NaN
6 6 NaN
7 7 seven
8 8 NaN
最佳答案
pd.Series.map
将 Series 作为参数,将其视为以索引为键的字典。
应用在这里,看起来像
dfWrite['Write Column'] = dfWrite['Match Column'].map(dfRead.set_index('Match Column')['Read Column'])
dfWrite
Out[409]:
Match Column Write Column
0 0 zero
1 1 one
2 2 two
3 3 three
4 4 four
5 5 NaN
6 6 NaN
7 7 seven
8 8 NaN
indexmatch(dfRead, dfWrite, 'Read Column', 'Write Column', 'Match Column', 'Match Column')
dfWrite
Out[413]:
Match Column Write Column
0 0 zero
1 1 one
2 2 two
3 3 three
4 4 four
5 5 NaN
6 6 NaN
7 7 seven
8 8 NaN
dfRead
的索引,跳过
.set_index(...)
步。匹配
dfWrite
的索引, 替换
dfWrite['Match Column'].map
与
dfWrite.index.to_series().map
关于excel - 使用 Pandas 在 Python 中复制 Excel 索引匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44663800/
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!