如何遍历熊猫数据框中的每一列和每个单元格
Posted
技术标签:
【中文标题】如何遍历熊猫数据框中的每一列和每个单元格【英文标题】:how to iterate through each columns and each cells in a pandas dataframe 【发布时间】:2018-08-26 18:11:48 【问题描述】:我有一个数据框 (training_df
),它有 4 列,每列包含大约 150 行。我也有如下功能:
def normalise(theMin, theMax, theVal):
if(theMin == theVal):
return 0
else if(theMax == theVal):
return 1
return (theVal - theMin) / (theMax - theMin)
现在,我要做的是依次遍历我的数据框的所有四列,并遍历每列中的所有行以及行中的每个值(当然每行中只有一个单元格) 我想用normalise
函数返回的任何值替换它们。所以我通过查看这个论坛中已经提出的问题来尝试这样的事情:
for column in training_df:
theMin = training_df[column].min()
theMax = training_df[column].max()
for i in training_df[[column]].iterrows():
training_df[[column[i]]] = normalise(theMin, theMax, i)
但是我收到了TypeError: string indices must be integers
,我对 Python、pandas 和数据挖掘还很陌生,所以如果有人能澄清一下,我会非常感激。提前致谢。
【问题讨论】:
【参考方案1】:我会做什么..
df.apply(lambda x : (x-x.min())/(x.max()-x.min()))
【讨论】:
df = df - df.min() / (df.max() - df.min())
也可以
感谢您的回复@Wen。问题不在于函数,它每次测试时都会返回我需要的值。当我尝试替换数据框中的值时会出现问题。以下部分工作正常:对于 training_df 中的列: theMin = training_df[column].min() theMax = training_df[column].max() 但是当我尝试用返回值替换每个单元格中的值时,它给出我一个错误
@SedatTurkoglu 更改为 for x,i in training_df[[column]].iterrows(): training_df.loc[x,column]= normalise(theMin, theMax, i[0])
真棒@Wen,这正是我需要的非常感谢:)以上是关于如何遍历熊猫数据框中的每一列和每个单元格的主要内容,如果未能解决你的问题,请参考以下文章