I have a dataframe with a column containing a list with values to replace each column, and I'm not sure how to move the list to do this. Here is an example dataframe:
A B C D
2020-07-31 0 0 0 [2,3,4]
2020-08-31 0 0 0 [5,6,7]
2020-09-30 0 0 0 [8,9,10]
2020-10-31 0 0 0 [0,1,2]
I would want to replace column A, B, and C with D like so:
A B C
2020-07-31 2 3 4
2020-08-31 5 6 7
2020-09-30 8 9 10
2020-10-31 0 1 2
What is the most efficient way to do this?
EDIT: column D is in the original dataframe, I want to move the values from D into A, B, and C and then drop the column D
CodePudding user response:
You can use:
df[:] = df.pop('D').to_list()
# or specifying columns
# df[['A', 'B', 'C']] = df.pop('D').tolist()
print(df)
# Output
A B C
2020-07-31 2 3 4
2020-08-31 5 6 7
2020-09-30 8 9 10
2020-10-31 0 1 2
CodePudding user response:
Assuming col "D" is not already in the original dataset and those dates are the index
df['D'] = df.apply(lambda ser: list(ser), axis=1)
If you only want to keep the index and column D
df = df[['D']]
CodePudding user response:
df[['A', 'B', 'C']] = df.D.tolist()
The proposed solution assumes that Column D will always have a list with exact three items.