我对这里发生的事情感到有点困惑。我有一个方法,它从一个pandas数据帧中获取值,然后创建一个新的。有一些列只能是字符串、浮点数或整数。该方法运行良好,并创建新的dataframe,其中数据类型不变,只有一列例外,由于某种原因,它只给出数字的int部分。我不明白为什么特别是那个专栏。我的方法看起来像这样:
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的列的唯一特定之处在于,它既包含整数又包含浮点数,而且它紧跟在仅包含字符串值的列之后
发布于 2020-09-14 19:54:34
你试试这个怎么样?
updtZbotmDf=pd.DataFrame({"ZBOTM (m)":gensodLays},dtype=str)https://stackoverflow.com/questions/63883385
复制相似问题