假设我有一个像这样生成的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
左手边看起来很啰嗦;我希望可能有更短的方法来做到这一点?
答案 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