我慢慢开始在 excel 中使用 python。不知怎么地,我管理了代码,但这次我收到的输出数据是用“,”分隔的。如何使用py选项 excel 做到这一点。
根据下图,aa、dd、ee 的总和为 18,bb、gg 的总和为 9,依此类推。我可以单独求和,但不确定如何处理分隔文本。任何帮助都将不胜感激。谢谢。
6
最佳答案
4
所以这样做:
SUM(SUMIF(A$3:A11,TEXTSPLIT(D3,",",,,1,","),B$3:B11))
1
-
++ 如果数据不是太大,Excel 公式最适合此任务…
–
|
我想通过 Excel 中的 Python 代码获取结果。 – Srikanth 9 小时前评论
您不需要 Python 来实现这一点,但如果您热衷于学习如何使用 Python 来实现这一点,那么请看这里。我已经对代码进行了注释,但如果您仍然想要特定行的解释,只需询问 🙂
假设您的数据如下所示。
这是您要尝试的吗?输入此代码G3
并按+ 。Python Mode
CTLENTER
import pandas as pd
#~~> Load data from I2:J11 into a dataframe
data_df = xl("I2:J11", headers=True)
#~~> Get the delimited list from F3:F6
delimited_lists = xl("F3:F6")[0].tolist() if isinstance(xl("F3:F6"), pd.DataFrame) else xl("F3:F6")
#~~> Create dictionary of Header1 and Header2
key_value_dict = dict(zip(data_df.iloc[:, 0], data_df.iloc[:, 1].astype(int)))
#~~> Calculate sum for each delimited list in F3:F6
summed_values = [
sum(key_value_dict.get(key.strip(), 0) for key in item.split(',')) if item else 0
for item in delimited_lists
]
#~~> Output the results as a list of lists to spill over multiple cells
[[value] for value in summed_values]
输出为 Python 对象 – Dataframe
输出为 Excel 值
|
输入:E2
=PY
df_nv = xl("A1:B10", headers=True)
names = xl("D2:D5").iloc[:,0]
nv = dict(zip(df_nv["Name"],df_nv["Value"]))
def sum_split(a):
return sum(map(lambda a: nv[a], a.split(",")))
list(map(sum_split, names))
Siddharth Rout的答案有更好的检查 – 例如仅为多单元输入xl
返回dataFrame 。
5
-
太棒了!很好地利用了
map()
withinsum()
我还在学习 Python,所以这是一个很好的教训!
– -
谢谢@SiddharthRout,我也在学习。顺便说一句,用检查 dataFrame
xl
很好。我会在我的回答中提到这一点。
– -
我正在尝试自学,因此我愿意听取任何建议…您有什么好书或在线网站可以推荐吗?
– -
1@SiddharthRout,我主要使用,但也喜欢“Fluent Python”。
– -
非常感谢 🙂
–
|
在 Excel 应用程序版本中无法访问 Excel 中的 Python,但可以使用 Office 365 中的常规 Excel 函数来完成:
=MAP(F4:F7,LAMBDA(x,SUM(LOOKUP(TEXTSPLIT(x,","),I4:J12))))
或者不使用 Lambda:=MMULT(TOROW(J4:J12)*ISNUMBER(FIND(","&TOROW(I4:I12)&",",","&F4:F7&",")),IFERROR(J4:J12^0,0))
|
–
–
–
–
–
|