我想根据索引和列更改
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
你的语法错误应该是这样的:
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
# 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 │