如何在具有重复日期时间的Pandas Dataframe上执行操作?

时间:2017-10-18 02:10:55

标签: pandas indexing

例如,给定数据框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

2 个答案:

答案 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)