user3809411
user3809411

Reputation: 346

Adding new column from list in dataframe But List have more values than total no of rows in dataframe

I have a dataframe and a list

df=pd.read_csv('aa.csv') 

temp=['1','2','3','4','5','6','7']`

Now my data-frame have only 3 rows. I am adding temp as a new column

df['temp']=pd.Series(temp)

But in the final df i am only getting first 3 values of temp and all others are rejected. Is there any way to add a list of larger/smaller in size as a new column to the dataframe Thanks

Upvotes: 1

Views: 46

Answers (1)

jezrael
jezrael

Reputation: 862661

Use DataFrame.reindex for create rows filled by missing values before created new column:

df = pd.read_csv('aa.csv') 

temp = ['1','2','3','4','5','6','7']

df = df.reindex(range(len(temp)))
df['temp'] = pd.Series(temp)

Sample:

df = pd.DataFrame({'A': [1,2,3]})
print(df)
   A
0  1
1  2
2  3

temp = ['1','2','3','4','5','6','7']

df = df.reindex(range(len(temp)))
df['temp']=pd.Series(temp)
print (df)
     A temp
0  1.0    1
1  2.0    2
2  3.0    3
3  NaN    4
4  NaN    5
5  NaN    6
6  NaN    7

Or use concat with Series with specify name for new column name:

s = pd.Series(temp, name='temp')

df = pd.concat([df, s], axis=1)

Similar:

s = pd.Series(temp)
df = pd.concat([df, s.rename('temp')], axis=1)

print (df)
     A temp
0  1.0    1
1  2.0    2
2  3.0    3
3  NaN    4
4  NaN    5
5  NaN    6
6  NaN    7

Upvotes: 4

Related Questions