【发布时间】:2020-06-11 01:59:52
【问题描述】:
我对 Python 还是很陌生。我正在尝试为以下数据集定义一个函数。
[demo.csv]https://docs.google.com/spreadsheets/d/1wJeAKlBnP3MBTlNykYBHP8D-V0X4ClpPWdJpddaetbQ/edit?usp=sharing
假设在给定的数据列中cell 1 到cell 6 是不相关的。我想知道与该特定行的cell 8 到cell 16 列中的数据相比,cell 7 有多少次具有最大值。因此,与cell 8 到cell 16 相比,代码应该理想地检查cell 7 具有最大值的所有行并打印该数字。
我正在做某事,但我在中间迷失了自己。这是我的代码:
def ntimes(filename):
data=pd.read_csv(filename, sep=',')
cntcell7=0
t='cell7'
column_names = list(data.columns.values)
max_index = data.idxmax()
row_data = data.loc[max_index, column_names[-10:]]
final_column_name = row_data.idxmax()
for j in final_column_name:
if final_column_name==t:
cntcell7=cntcell7+1
return (cntcell7)
ntimes("demo.csv")
让我解释一下我想做什么。每次使用idxmax() 在最后 10 列中有最大值时,我都尝试查找列名,并在所有行上进行迭代。然后计算该列名出现的次数。但是,我肯定在这里做错了。
理想情况下,对于给定的数据集,计数应返回为4
【问题讨论】:
-
那么,您是说想要列“单元格 7”的值大于同一行中“单元格 8”到“单元格 16”列中的所有值的次数?
-
是的。没错。