更改 Pandas DataFrame 数据点的值

问题描述 投票:0回答:2

我想根据索引和列更改

Pandas
DataFrame 的值。我收到错误
A value is trying to be set on a copy of a slice from a DataFrame
。我四处搜索并发现了类似的问题/答案,但没有一个是我能够应用的。

import pandas as pd

BabyDataSet = [('Bob', 968), ('Jessica', 155), ('Mary', 77), ('John', 578), ('Mel', 973)]

df = pd.DataFrame(index=['a','b','c','d','e'], data=BabyDataSet, columns=['Names', 'Births'])
df.ix['c']['Births'] = 10
print df
python python-2.7 pandas
2个回答
2
投票

你的语法错误应该是这样的:

In [30]:
df.ix['c','Births'] = 10 
df

Out[30]:
     Names  Births
a      Bob     968
b  Jessica     155
c     Mary      10
d     John     578
e      Mel     973

第一个组成部分是索引标签,第二个组成部分是列名称。

你也可以这样做

In [32]:
df.loc['c','Births'] = 10 
df

Out[32]:
     Names  Births
a      Bob     968
b  Jessica     155
c     Mary      10
d     John     578
e      Mel     973

0
投票
    # duckdb
    df.reset_index().sql().select("names,case when index='c' then 10 else Births end Births")

out

┌─────────┬────────┐
│  Names  │ Births │
│ varchar │ int64  │
├─────────┼────────┤
│ Bob     │    968 │
│ Jessica │    155 │
│ Mary    │     10 │
│ John    │    578 │
│ Mel     │    973 │
© www.soinside.com 2019 - 2024. All rights reserved.