我正在尝试使用while循环来读取文件的所有行,并在满足条件时编辑特定单元格的值。
当我从Excel读取数据时,我的逻辑工作正常。但是,当我从csv文件读取内容时,相同的逻辑无法正常工作。
这是我从Excel文件读取的逻辑:
df = pd.read_excel('Energy Indicators.xls', 'Energy', index_col=None, na_values=['NA'], skiprows = 15, skipfooter = 38, header = 1, parse_cols ='C:F')
df = df.rename(columns = {'Unnamed: 0' : 'Country', 'Renewable Electricity Production': '% Renewable'})
df = df.drop(0, axis=0)
i = 0
while (i !=len(df)):
if df.iloc[i]['Country'] == "Ukraine18":
print(df.iloc[i]['Country'])
df.iloc[i]['Country'] = 'Ukraine'
print(df.iloc[i]['Country'])
i += 1
df
我得到的结果是:
Ukraine18
Ukraine
但是当我读取CSV文件时:
df = pd.read_csv('world_bank.csv', skiprows = 4)
df = df.rename(columns = {'Country Name' : 'Country'})
i = 0
while (i !=len(df)):
if df.iloc[i]['Country'] == "Aruba":
print(df.iloc[i]['Country'])
df.iloc[i]['Country'] = "Arb"
print(df.iloc[i]['Country'])
i += 1
df
我得到的结果是:
Aruba
Aruba
有人可以帮忙吗? CSV文件有什么问题?
答案 0 :(得分:2)
@Anna Iliukovich-Strakovskaia,@ msr_003,你们是对的!我将代码更改为df['ColumnName][i]
,它可以与CSV文件一起使用。但是,现在不能使用Excel文件。
因此,似乎从CSV文件读取数据时,df['ColumnName][i]
正常工作,
但是使用从Excel文件读取的数据,df.iloc[i]['ColumnName']
可以正常工作。
在某个时间点上,我不知道为什么会有区别,因为我不是在文件“内部”使用数据,而是在处理从这些文件读入“数据帧”的数据。我认为,一旦数据进入数据帧,源就不应有任何影响。
无论如何,谢谢您的帮助!!
答案 1 :(得分:0)
我通常按如下方式进行修改。
testdf = pd.read_csv("sam.csv")
testdf
ExportIndex AgentName Country
0 1 Prince United Kingdom
1 2 Nit United Kingdom
2 3 Akhil United Kingdom
3 4 Ruiva United Kingdom
4 5 Niraj United Kingdom
5 6 Nitin United States
i = 0
while(i != len(testdf)):
if(testdf['AgentName'][i] == 'Nit'):
testdf['AgentName'][i] = 'Nitesh'
i += 1
testdf
ExportIndex AgentName Country
0 1 Prince United Kingdom
1 2 Nitesh United Kingdom
2 3 Akhil United Kingdom
3 4 Ruiva United Kingdom
4 5 Niraj United Kingdom
5 6 Nitin United States
但是我不确定您的方法有什么问题。