Sourav
Sourav

Reputation: 866

Add Uneven Sized Data Columns in Pandas

I want to add a list as a column to the df dataframe. The list has a different size than the column length.

df = 
A   B   C
1   2   3
5   6   9
4   
6       6
8       4
2       3
4   
6       6
8       4


D = [11,17,18]

I want the following output

df = 
A   B   C   D
1   2   3   11
5   6   9   17
4           18
6       6
8       4
2       3
4   
6       6
8       4

I am doing the following to extend the list to the size of the dataframe by adding "nan"

# number of nan value require for the list to match the size of the column
extend_length = df.shape[0]-len(D)

# extend the list 
D.extend(extend_length * ['nan'])

# add to the dataframe
df["D"] = D

A   B   C   D
1   2   3   11
5   6   9   17
4           18
6       6   nan
8       4   nan
2       3   nan
4           nan
6       6   nan
8       4   nan

Where "nan" is treated like string but I want it to be empty ot "nan", thus, if I search for number of valid cell in D column it will provide output of 3.

Upvotes: 2

Views: 2462

Answers (2)

Andy L.
Andy L.

Reputation: 25259

A simple pd.concat on df and series of D as follows:

pd.concat([df, pd.Series(D, name='D')], axis=1)

or

df.assign(D=pd.Series(D))

Out[654]:
   A    B    C     D
0  1  2.0  3.0  11.0
1  5  6.0  9.0  17.0
2  4  NaN  NaN  18.0
3  6  NaN  6.0   NaN
4  8  NaN  4.0   NaN
5  2  NaN  3.0   NaN
6  4  NaN  NaN   NaN
7  6  NaN  6.0   NaN
8  8  NaN  4.0   NaN

Upvotes: 1

TomNash
TomNash

Reputation: 3288

Adding the list as a Series will handle this directly.

D = [11,17,18]
df.loc[:, 'D'] = pd.Series(D)

Upvotes: 2

Related Questions