例如,给定数据框df1
:
Date Computers Syms
2011-01-10 400. 1
2011-01-10 500. 1
2012-04-12 450. 1
和变量log = some_df.loc[some_df.index, 'Cat']
和price = df2.loc[:, log]
,
我想计算
df1.loc[df1.index, syms] = price * log
其中syms
就是系列。当我尝试上面的命令时,我收到错误:
ValueError: cannot reindex from a duplicate axis
如果某些索引是等价的,我应该如何将syms
的列值设置为该表达式呢?
预期输出为
Date syms1 syms2
2011-01-10 price * log price * log
2011-01-10 price * log price * log
2012-04-12 price * log price * log
答案 0 :(得分:2)
使用operator+(int data, derived &obj)
时,您可以使用loc
来指示所有轴,索引或列。
:
您还可以使用df_trades.loc[:, 'syms'] = houses * cars
df_trades
Date Computers syms
0 2011-01-10 400 80000
1 2011-01-10 500 80000
2 2012-04-12 450 80000
制作包含新列的副本
pd.DataFrame.assign
如果df_trades.assign(syms=houses * cars)
Date Computers syms
0 2011-01-10 400 80000
1 2011-01-10 500 80000
2 2012-04-12 450 80000
是一系列列名
syms
答案 1 :(得分:1)
df ['Syms'] = 400 * 200
df
Out[189]:
Date Computers syms
0 2011-01-10 400 80000
1 2011-01-10 500 80000
2 2012-04-12 450 80000
修改
syms=['sys1','sys2']
d = dict.fromkeys(syms, 200*400)
df.assign(**d)