Python 在我没有要求时,将列的数据类型从float更改为integer
我对这里发生的事情感到有点困惑。我有一个方法,它从一个数据帧中获取值并创建一个新的数据帧。有些列仅为字符串、浮点或整数。该方法可以很好地工作,并在数据类型不变的情况下创建新的dataframe,除了一列之外,由于某种原因,它只给出数字的int部分。我不明白为什么要特别写那篇专栏文章。我的方法如下所示:Python 在我没有要求时,将列的数据类型从float更改为integer,python,pandas,dataframe,Python,Pandas,Dataframe,我对这里发生的事情感到有点困惑。我有一个方法,它从一个数据帧中获取值并创建一个新的数据帧。有些列仅为字符串、浮点或整数。该方法可以很好地工作,并在数据类型不变的情况下创建新的dataframe,除了一列之外,由于某种原因,它只给出数字的int部分。我不明白为什么要特别写那篇专栏文章。我的方法如下所示: def assignPropsToFinList(self,gensodLays): updtZbotmDf=pd.DataFrame({"ZBOTM (m)":gen
def assignPropsToFinList(self,gensodLays):
updtZbotmDf=pd.DataFrame({"ZBOTM (m)":gensodLays})
columnTitle = self.soilDf.columns.tolist()
for i in range(len(columnTitle)):
if i == 0:
pass
else:
updtZbotmDf[columnTitle[i]] = 0
for j in range(len(gensodLays)):
for k in range(len(self.soilDf)):
if j == 0 and k == 0:
updtZbotmDf.loc[:, (columnTitle[i])][j] = self.soilDf.loc[:, (columnTitle[i])][k]
elif updtZbotmDf["ZBOTM (m)"][j] == self.soilDf["Penetration (m)"][k] and updtZbotmDf["ZBOTM (m)"][j] == \
self.soilDf["Penetration (m)"][k - 1]: # here I am sorting the points that where onee layer ends and other starts and both have same depth value
updtZbotmDf.loc[:, (columnTitle[i])][j] = self.soilDf.loc[:, (columnTitle[i])][k - 1]
elif updtZbotmDf["ZBOTM (m)"][j] == self.soilDf["Penetration (m)"][k] and updtZbotmDf["ZBOTM (m)"][j] != \
self.soilDf["Penetration (m)"][k - 1]:
updtZbotmDf.loc[:, (columnTitle[i])][j] = self.soilDf.loc[:, (columnTitle[i])][k]
elif self.soilDf["Penetration (m)"][k] > updtZbotmDf["ZBOTM (m)"][j] > self.soilDf["Penetration (m)"][k - 1]:
updtZbotmDf.loc[:, (columnTitle[i])][j] = self.soilDf.loc[:, (columnTitle[i])][k]
return updtZbotmDf
由于某种原因将值从float更改为int的列的唯一特殊之处是,它同时包含int和float,并且在只包含字符串值的列的右上方也包含它们
updtZbotmDf=pd.DataFrame({"ZBOTM (m)":gensodLays},dtype=str)
你让我们努力工作来帮助你。你能把你的代码精简到一个最小的例子来演示这个问题吗?我想代码已经尽可能地精简了,但只是简单地解释一下我的问题是什么:例如,我有第一列-当我创建新的数据帧数据类型时,它有浮动保持不变,我有第二列是字符串,当我用相同的列字符串创建新的dataframe时,仍然是字符串,我有第三列,它是浮点和整数的混合输入,当我创建新dataframe时,它变成只有int(这是我没有得到的部分)。最后,在这之后,我有一堆其他的列,其中初始数据帧有float,然后新数据帧中的值是float,这都很好。就个人而言,在我的方法中,我看不到我在操作数据类型的任何地方,我的代码只是从原始数据帧中提取特定值的逻辑