energy.loc['Republic of Korea']
我想将指数的价值从“韩国”改为“韩国”。 但是数据框太大,无法更改每个索引值。我如何仅更改此单个值?
答案 0 :(得分:43)
你想做这样的事情:
as_list = df.index.tolist()
idx = as_list.index('Republic of Korea')
as_list[idx] = 'South Korea'
df.index = as_list
基本上,您将索引作为列表,更改一个元素,并替换现有索引。
答案 1 :(得分:16)
@ EdChum的解决方案看起来不错。 这是使用重命名的方法,它将替换索引中的所有这些值。
energy.rename(index={'Republic of Korea':'South Korea'},inplace=True)
这是一个例子
>>> example = pd.DataFrame({'key1' : ['a','a','a','b','a','b'],
'data1' : [1,2,2,3,nan,4],
'data2' : list('abcdef')})
>>> example.set_index('key1',inplace=True)
>>> example
data1 data2
key1
a 1.0 a
a 2.0 b
a 2.0 c
b 3.0 d
a NaN e
b 4.0 f
>>> example.rename(index={'a':'c'}) # can also use inplace=True
data1 data2
key1
c 1.0 a
c 2.0 b
c 2.0 c
b 3.0 d
c NaN e
b 4.0 f
答案 2 :(得分:7)
这是另一个好的,在列上使用replace。
df.reset_index(inplace=True)
df.drop('index', axis = 1, inplace=True)
df["Country"].replace("Republic of Korea", value="South Korea", inplace=True)
df.set_index("Country", inplace=True)
答案 3 :(得分:2)
这是基于<target name="junit" depends="compile">
<junit printsummary="yes"
haltonfailure="no">
<classpath> <path refid="sample-classpath" /> </classpath>
<formatter type="plain" usefile="false" />
<batchtest todir="${junit.report.dir}">
<fileset dir="${build.classes.dir}">
<include name="**/*Test.class" />
</fileset>
</batchtest>
</junit>
</target>
set_value
答案 4 :(得分:2)
如果您具有MultiIndex DataFrame,请执行以下操作:
# input DataFrame
import pandas as pd
t = pd.DataFrame(data={'i1':[0,0,0,0,1,1,1,1,2,2,2,2],
'i2':[0,1,2,3,0,1,2,3,0,1,2,3],
'x':[1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.]})
t.set_index(['i1','i2'], inplace=True)
t.sort_index(inplace=True)
# changes index level 'i1' values 0 to -1
t.rename(index={0:-1}, level='i1', inplace=True)
答案 5 :(得分:2)
尝试一下
df.rename(index={'Republic of Korea':'South Korea'},inplace=True)
答案 6 :(得分:0)
这似乎也可行:
energy.index.values[energy.index.tolist().index('Republic of Korea')] = 'South Korea'
不知道是建议还是不建议这样做。