Vectorised Method To Append Dataframe Rows To Columns And Vice-versa
My dataframe is as follows: df = pd.DataFrame({'a': {'d': 1, 'e': 0, 'f': 1, 'g': 1}, 'b': {'d': 0, 'e': 0, 'f': 0, 'g': 1}, 'c': {'d': 0, 'e'
Solution 1:
Here's one way using reindex:
(df.reindex(df.columns.append(df.index),
axis=1,
fill_value =0)
.reindex(df.index.append(df.columns),
axis=0,
fill_value =0))
print(df_new)
a b c d e f g
d 1 0 0 0 0 0 0
e 0 0 1 0 0 0 0
f 1 0 1 0 0 0 0
g 1 1 0 0 0 0 0
a 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0
Solution 2:
Use DataFrame.reindex witn columns and index parameter, new values should be created by Index.append:
df1 = df.reindex(columns=df.columns.append(df.index),
index=df.index.append(df.columns),
fill_value = 0)
print (df1)
a b c d e f g
d 1 0 0 0 0 0 0
e 0 0 1 0 0 0 0
f 1 0 1 0 0 0 0
g 1 1 0 0 0 0 0
a 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0
Or by Index.union:
df1 = df.reindex(columns=df.columns.union(df.index, sort=False),
index=df.index.union(df.columns, sort=False),
fill_value = 0)
print (df1)
a b c d e f g
a 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0
d 1 0 0 0 0 0 0
e 0 0 1 0 0 0 0
f 1 0 1 0 0 0 0
g 1 1 0 0 0 0 0
Solution 3:
Create a dictionary from fromkeys then unpack it, then use assign and T then assign then T:
print(df.assign(**dict.fromkeys(df.index, 0)).T.assign(**dict.fromkeys(df.columns, 0)).T)
Output:
a b c d e f g
d 1 0 0 0 0 0 0
e 0 0 1 0 0 0 0
f 1 0 1 0 0 0 0
g 1 1 0 0 0 0 0
a 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0
Post a Comment for "Vectorised Method To Append Dataframe Rows To Columns And Vice-versa"