我将两个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
答案 0 :(得分:0)
似乎出现了错字(values
与value
)。由于此赋值永远不会出现在预期变量上,因此您正在比较前一个for循环的最后一个iteraton中设置的值。
在您的2019 for循环内:
values = sites_2019.at[idx,i]
应该是
value = sites_2019.at[idx,i]