gpt4 book ai didi

python - 利用 Pandas 功能/使代码更 Pythonic 来重写 excel 宏

转载 作者:行者123 更新时间:2023-12-04 22:14:25 24 4
gpt4 key购买 nike

所以我正在重写一个excel宏,虽然我已经成功地重新创建了它;我想重做我的代码,因为它有点简单,而且是一种更简单/蛮力的解决方案。我意识到我并没有真正充分利用 pandas 的功能(我是 pandas 的新手,而不是 python 的新手)。我也没有最多的时间来开发这个,所以我就去了。
我需要重新创建一个可靠的 30 个公式,它们基本上都是嵌套在这个起始 for 循环中的 if 语句(这些不是真正的变量名):

for row in range(len(dataframe)):
if dataframe.iat[row, 8][12:-2] == "some string":
dataframe.iat[row, 4] = "some other string"

# convert float to int into a string
elif dataframe.iat[row, 8][10:-4] == str(int(dataframe.iat[row, 13]))[2:]:
dataframe.iat[row, 4] = "some string2"
else:
dataframe.iat[row, 4] = "some string3"
VBA 形式的此代码示例:
=IF(MID(I2,13,2)="some string","some other string",(IF(RIGHT(N2,2)=MID(I2,11,2),"some string2","some string3")))
再举一个例子(相信我,我知道使用这么多的'或'根本不是真正的pythonic - 它会被修复):
    if dataframe.iat[row, 27] != 0 or dataframe.iat[row, 28] != 0 or dataframe.iat[row, 29] 
!= 0 or dataframe.iat[row, 25] != 0 or dataframe.iat[row, 30] != 0:
dataframe.iat[row, 23] = "Yes"
else:
dataframe.iat[row, 23] = "No"
我面临的最大问题是当我必须访问多个列时,这可能是由于我缺乏 Pandas 经验。

最佳答案

在没有示例数据的情况下给出真正可靠的答案是很棘手的,但是,我认为 .loc 可以解决大部分问题。
例子:

dataframe.loc[(dataframe["Column 8's name"].str[12:-2] == "some string"), "Column 4s name"] = "some other string"
dataframe.loc[(dataframe["Column 8's name"].str[10:-4] == dataframe["Column 13's name"].map(int).map(str).str[2:), "Column 4s name"] = "some string2"

# then finally just fill
dataframe["Column 4s name"] = dataframe["Column 4s name"].fillna("some string3")
.loc 是一种比遍历行快得多的方法,因为它使用矢量化。我还包含了方法 .map,它替换了内置的 str() 和 int() 方法。

关于python - 利用 Pandas 功能/使代码更 Pythonic 来重写 excel 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70951410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com