user6457870
user6457870

Reputation: 247

'Timestamp' object is not iterable

I am trying to multiply a pandas.core.series.Series (df1['col1']) with a pandas.core.frame.DataFrame (df2). Their indexes are the same but it always gives me back ' 'Timestamp' object is not iterable ' when I am trying to multiply them by doing

k = df1['col1'].mul(df2)


[In] df1:
[out]
Index         col1    col2
2065-12-20     12      apples
2061-10-31     12      candies
2045-11-28     70      marshmalow
2043-10-31     11      apples
2040-07-30     21      cars
2049-06-30     64      planes
2036-01-31     14      glasses



[In] df2: 
Index             col1    col2   etc.... 
2065-12-20         14      120
2061-10-31         18      800
2045-11-28         19      580
2043-10-31         21      12
2040-07-30         44      21
2049-06-30         1.2     17
2036-01-31         61.8    61 

and I want

Index             col1        col2   etc.... 
2065-12-20         14*12      120*12
2061-10-31         18*12      800*12
2045-11-28         19*70      580*70
2043-10-31         21*11      12*11
2040-07-30         44*21      21*21
2049-06-30         1.2*64     17*64
2036-01-31         61.8*14    61*61

the df1['col1'] was in days before, I transformed it using

df1['col1'] = (df1['col1'].values / np.timedelta64(1, 'D')).astype(int)

df1.dtypes = dtype('int32')

any ideas why it throw back an error?

Upvotes: 3

Views: 6642

Answers (1)

MSeifert
MSeifert

Reputation: 152587

The exception comes because you multiply with a whole DataFrame (including a timestamp column!), not just a single column:

df1['col1'].mul(df2)

Given the data frames you probably wanted:

df1['col1'].mul(df2['col1'])

If you want to process multiple columns at once:

df1['col1'].values[:, None] * df2[['col1', 'col2', ...]]  # explicitly list columns

df1['col1'].values[:, None] * df2[df2.columns[1:]]        # all columns except the first

Upvotes: 1

Related Questions