For循环将所有值替换为41

时间:2019-08-14 22:43:42

标签: python pandas dataframe

我将两个csv文件加载到两个单独的数据帧中,这些数据帧通过相同的for循环运行。 2018年df返回预期结果,但2019年df并非出于未知原因而疯狂。 在for循环之后,所有值= 41。

我已经确认2019年数据没有以错误的值加载到DF中。

import pandas as pd
#change display settings
pd.set_option('display.max_columns', 25)
pd.set_option('display.max_rows', 500)

#load sites into dataframe
sites_2018 = pd.read_csv('sites2018_cleaned.csv', index_col='Site Name')
sites_2019 = pd.read_csv('sites2019_cleaned_copy.csv', index_col='Site Name')

#drop columns with all NaN values
sites_2018 = sites_2018.dropna(axis=1, how='all')
sites_2019 = sites_2019.dropna(axis=0, how='all')

#iterate through all cells using index and column headers to convert string values to numeric

##2018
column_headers2018 = list(sites_2018.columns.values)
for idx in sites_2018.index:
    for i in column_headers2018:
        value = sites_2018.at[idx,i]
        if value == '<10':
            value = 10
        if value == '>24196':
            value = 24196
        int (value)
        sites_2018.at[idx,i] = value

##2019
column_headers2019 = list(sites_2019.columns.values)
for idx in sites_2019.index:
    for i in column_headers2019:
        values = sites_2019.at[idx,i]
        if value == '<10':
            value = 10
        if value == '>24196':
            value = 24196
        int (value)
        sites_2019.at[idx,i] = value

在for循环之前和之后尝试打印(sites_2019)。您会看到问题。 以下是源数据:https://www.dropbox.com/sh/k2oiyq066pb9vil/AABKSM19iItvJRn-oqQ6pwM3a?dl=0

1 个答案:

答案 0 :(得分:0)

似乎出现了错字(valuesvalue)。由于此赋值永远不会出现在预期变量上,因此您正在比较前一个for循环的最后一个iteraton中设置的值。

在您的2019 for循环内:

values = sites_2019.at[idx,i]

应该是

value = sites_2019.at[idx,i]