尝试忽略Excel列中的零值

尝试忽略Excel列中的零值,excel,pandas,python-2.7,Excel,Pandas,Python 2.7,在我正在处理的Excel电子表格中有两列,列B和列E。在列B中有一些0值,这些值根据我正在运行的关于列D的循环传递到列E。我想编写一个Python脚本来忽略这些0值,并根据它们在列E中的频率选择下一个最高值 12NC ModifiedSOCwrt12NC SOC 0 232270463903 0 0 1 232270463903 0

在我正在处理的Excel电子表格中有两列,列B和列E。在列B中有一些0值,这些值根据我正在运行的关于列D的循环传递到列E。我想编写一个Python脚本来忽略这些0值,并根据它们在列E中的频率选择下一个最高值

           12NC ModifiedSOCwrt12NC              SOC
0  232270463903                  0                0
1  232270463903                  0                0
2  232270463903                  0                0
3  232270463903                  0                0
4  232270463903                  0  RC0603FR-0738KL
5  232270463903                  0  RC0603FR-0738KL
6  232270463903                  0  RC0603FR-0738KL

我想运行一个循环,从SOC列B中选取非零值,并根据列D中的唯一值将其传递到ModifiedSOCwrt12NC列E


例如,列B在多行中有值=[0,RCK2],这些值基于列D中的唯一值。因此,当前循环选择列B中出现的最大值,并将其填充到列E中。如果出现的0和RCK2之间存在关联,则根据我不希望出现的ASCII标准选择0。我希望代码选择RCK2并填写E列中的数据。

由于您的数据不可访问,我创建了一个类似于下面的测试数据-

我们可以读取熊猫的数据-

import pandas as pd

df = pd.read_excel("ExcelTemplate.xlsx")
df

Index   SOC Index2  12NC
0   YXGMY   0   ZJIZX   23445
1   NQHQC   0   JKJKT   23445
2   MWTLY   0   EFCYD   23445
3   RPQFE   AC  VLOJZ   23445
4   GPLUQ   AC  AKKKG   23445
5   WGYYM   AC  DSMLO   23445
6   XGTAQ   0   ZHGWS   45667
7   AMWDT   0   YROLO   45667
以下代码将进行总结-

首先总结12NC和SOC的数据,并进行计数 按12NC、计数和SOC排序,首先是最高计数 取每个12NC的SOC的第一个值 与原始数据合并以创建列E 导出回Excel
请不要把输入作为图像,它很难复制您的输入。请提供预期的结果。我想运行一个循环,从B列中选取非零值,并根据D列中的唯一值将其传递到E列。我不明白你在说什么,我真的不清楚。如何迭代行?你这是什么意思?是否要将B列中的值替换为B列为0的D列中的值?请为ex提供示例输入和输出:B列的值=[0,RCK2]位于多行中,这是基于D列中的唯一值。因此,当前循环选择B列中出现的最大值,并将其填充到E列中。如果出现的0和RCK2之间存在关联,它根据ASCII标准选择0,我不希望发生这种情况。我希望代码选择RCK2并填写E列中的内容。希望这能让它更清晰。对不起,我没有理解你,我不明白你为什么不花时间以更清晰的方式编辑问题?你的问题不清楚。请在问题部分提供输入和输出示例。感谢您为帮助我所做的努力。你能告诉我在这种情况下如何跳过一个特定的值,例如0,并选择循环中出现次数第二高的下一个值。在我的代码片段中,请参阅我写的地方-df1[df1['SOC']!=0],这是跳过零,可以用来跳过任何值
df1 = df.groupby(['12NC', 'SOC'])['Index'].count().reset_index()
df = df.merge(df1[df1['SOC']!=0].sort_values(by=['12NC', 'Index', 'SOC'], ascending=[True, False, True])\
         .drop_duplicates(subset=['12NC'], keep='first')[['12NC', 'SOC']].\
         rename(index=str, columns={'SOC': 'ModifiedSOCwrt12NC'}),\
         on = ['12NC'], how='left')
df.to_excel("ExcelTemplate_modifies.xlsx", index=False)