pandas:迭代DataFrame列时的索引器错误

2024-06-28 21:40:59 发布

您现在位置:Python中文网/ 问答频道 /正文

它的一个列看起来像是在重复它的一个列:

    Year             President            Party      Value
0   1920         Woodrow Wilson      Democratic        NaN       
1   1921      Warren G. Harding      Republican   0.127172        
2   1922      Warren G. Harding      Republican   0.217386

我的代码如下:

^{pr2}$

但由于If语句,我一直得到以下错误:

IndexError: only integers, slices (:), ellipsis (...), numpy.newaxis (None) and integer or boolean arrays are valid indices.

感谢您建议。很多提前谢谢!在


Tags: 代码ifvalueparty语句nanyearwarren
2条回答

设置

df=pd.DataFrame({'Party': {0: 'Democratic', 1: 'Republican', 2: 'Republican'},
 'President': {0: 'WoodrowWilson', 1: 'WarrenG.Harding', 2: 'WarrenG.Harding'},
 'Value': {0: np.nan, 1: 0.12717200000000001, 2: 0.21738600000000002},
 'Year': {0: 1920, 1: 1921, 2: 1922}})

df
Out[1243]: 
        Party        President     Value  Year
0  Democratic    WoodrowWilson       NaN  1920
1  Republican  WarrenG.Harding  0.127172  1921
2  Republican  WarrenG.Harding  0.217386  1922

#you can do this without a loop using groupby.
df_Democrat = df.rename(columns={'Value':'Return'}).groupby('Party')['Party','Year','Return'].get_group('Democratic')
Out[1238]: 
        Party  Year  Return
0  Democratic  1920     NaN

df_Republican  = df.rename(columns={'Value':'Return'}).groupby('Party')['Party','Year','Return'].get_group('Republican')
Out[1239]: 
        Party  Year    Return
1  Republican  1921  0.127172
2  Republican  1922  0.217386

这段代码应该会给你想要的输出

df = pd.DataFrame({'year': [1920,1921,1922,1923,1924,1925,1926],
    'pres': ['jon doe1','jon doe2','jon doe3','jon doe4','jon doe5','jon doe6','jon doe7'],
    'party': ['dem','repub','dem','repub','dem','repub','repub'],
    'value': [18.61, 17.60, 18.27, 16.18, 16.81, 16.37, 67.07]})

repub = df.loc[df.party == 'repub']
dem = df.loc[df.party == 'dem']

输出:

^{pr2}$

相关问题 更多 >