通过索引从Pandas DataFrame访问单个值的简洁方法

时间:2016-07-29 14:20:54

标签: python pandas

假设我有一个像这样生成的DataFrame:

import numpy as np
import pandas as pd

np.random.seed(seed=0)
df = pd.DataFrame(index=list('AB'), columns=list('CD'), data=np.random.randn(2,2))

看起来像

          C         D
A  1.764052  0.400157
B  0.978738  2.240893

并且假设我想将A行,C列中的值增加1.我发现这样做的方式是:

df['C'][df.index.isin(['A'])] += 1

左手边看起来很啰嗦;我希望可能有更短的方法来做到这一点?

3 个答案:

答案 0 :(得分:3)

您可以直接在col:

上使用loc
In [298]:
df['C'].loc['A'] += 1
df

Out[298]:
          C         D
A  2.764052  0.400157
B  0.978738  2.240893

或通过将行标签作为df上的第一个arg传递并在逗号后选择感兴趣的col来复合它:

In [300]:
df.loc['A','C'] += 1
df

Out[300]:
          C         D
A  2.764052  0.400157
B  0.978738  2.240893

答案 1 :(得分:2)

使用ix

np.random.seed(seed=0)
df = pd.DataFrame(index=list('AB'), columns=list('CD'), data=np.random.randn(2,2))

df.ix['A','C'] += 1
print (df)
          C         D
A  2.764052  0.400157
B  0.978738  2.240893

答案 2 :(得分:1)

您可以使用.at来访问/设置标量。请查看this answer以了解它们。

df
Out: 
          C         D
A  1.764052  0.400157
B  0.978738  2.240893

df.at['A', 'C'] += 1

df
Out: 
          C         D
A  2.764052  0.400157
B  0.978738  2.240893