Home > Software design >  Set values in DataFrame together for specific indices and specific columns
Set values in DataFrame together for specific indices and specific columns

Time:08-19

I am trying to set values in DataFrame for a set of indices and columns at the same time, but I am getting None values.

Here is my code:

import pandas as pd
results = pd.DataFrame({0: ['a', 'b', 'c'], 1: ['e', 'f', 'g']})
data = pd.DataFrame({'id': [i for i in range(10)], 'top1': [i*2 for i in range(10)], 'top2': [i*3 for i in range(10)]})
at_index = np.array([0,1,2])

### I tried all of those ways but none of them worked.
data.loc[at_index, ["top1", "top2"]] = results
# data[["top1", "top2"]].iloc[at_index] = results
# data.iloc[at_index][["top1", "top2"]] = results    

enter image description here

CodePudding user response:

Problem is that the column name of results and target top1, top2 are not the same. You can try assign numpy array

data.loc[at_index, ["top1", "top2"]] = results.values # or results.to_numpy()
print(data)

   id top1 top2
0   0    a    e
1   1    b    f
2   2    c    g
3   3    6    9
4   4    8   12
5   5   10   15
6   6   12   18
7   7   14   21
8   8   16   24
9   9   18   27

CodePudding user response:

You cannot have more than one data type in the same column of a dataframe

  • Related