Home > OS >  How fulfil empy df by FOR loop
How fulfil empy df by FOR loop

Time:04-02

I need to create a dataframe with two columns: variable, function based on this variable. There is an error in case of next code:

test = pd.DataFrame({'Column_1': pd.Series([], dtype='int'),
               'Column_2': pd.Series([], dtype='float')})
for i in range(1,30):
    k = 0.5**i
    test.append(i, k)
print(test)

TypeError: cannot concatenate object of type '<class 'int'>'; only Series and DataFrame objs are valid

What do I need to fix here? Looks like answer is easy, however it is uneasy to find it... Many thanks for your help

CodePudding user response:

Is there a specific reason you are trying to use the loop? You can create df with column_1 and use Pandas vectorized operations to create column_2

df = pd.DataFrame(np.arange(1,30), columns = ['Column_1'])
df['Column_2'] = 0.5**df['Column_1']

    Column_1    Column_2
0   1           0.50000
1   2           0.25000
2   3           0.12500
3   4           0.06250
4   5           0.03125

CodePudding user response:

I like Vaishali's way of approaching it. If you really want to use the for loop, this is how I would of done it:

import pandas as pd

test = pd.DataFrame({'Column_1': pd.Series([], dtype='int'),
           'Column_2': pd.Series([], dtype='float')})

for i in range(1,30):
    test=test.append({'Column_1':i,'Column_2':0.5**i},ignore_index=True)

test = test.round(5)
print(test)


    Column_1  Column_2
0        1.0   0.50000
1        2.0   0.25000
2        3.0   0.12500
3        4.0   0.06250
4        5.0   0.03125
5        6.0   0.01562
  • Related