1

For example i have 5 dataframes like

df1 df2 df3 df4 df4

In every column there is a column present with name 'phone_no'.

I'm trying to change the datatype of phone_no with for loop, but it's not working. Below is the code

df_all = [df1, df2, df3, df4, df5]

df_all = [i['phone_no'].astype(str) for i in df_all]

when i try to print df_all, then it's returning output like

[2        669263000000.0
 3        313988000000.0
 4        182100000000.0
 12       270449000000.0
 13       109617000000.0
 Name: phone_no, Length: 14042, dtype: object,
 1        466167000000.0
 8        433999000000.0
 9        323820000000.0
 11       823428000000.0
 15       659981000000.0
 Name: phone_no, Length: 13947, dtype: object,
 7        832447000000.0
 14       178296000000.0
 22       145628000000.0
 29       642982000000.0
 48       596803000000.0
 Name: phone_no, Length: 13924, dtype: object,
 0        555314000000.0
 5        110872000000.0
 19       890271000000.0
 34       634257000000.0
 37       125423000000.0
 Name: phone_no, Length: 14112, dtype: object,
 6        314615000000.0
 10       982864000000.0
 23       287164000000.0
 24       746213000000.0
 27       590169000000.0
 Name: phone_no, Length: 13686, dtype: object]

The only issue is that, if i run the above code, it's only returning the phone_no column from every dataframe, it's not returning the complete dataframe. How to resolve this issue?

After that how to perform the below code

df_all = [i['phone_no'].str[0:12] for i in df_all]

Output is

[2        669263000000
 3        313988000000
 4        182100000000
 12       270449000000
 13       109617000000
 Name: phone_no, Length: 14042, dtype: object,
 1        466167000000
 8        433999000000
 9        323820000000
 11       823428000000
 15       659981000000
 Name: phone_no, Length: 13947, dtype: object,
 7        832447000000
 14       178296000000
 22       145628000000
 29       642982000000
 48       596803000000
 Name: phone_no, Length: 13924, dtype: object,
 0        555314000000
 5        110872000000
 19       890271000000
 34       634257000000
 37       125423000000
 Name: phone_no, Length: 14112, dtype: object,
 6        314615000000
 10       982864000000
 23       287164000000
 24       746213000000
 27       590169000000
 Name: phone_no, Length: 13686, dtype: object]

The above code will only return the phone_no column from all the dataframes after performing slicing. It'll miss another columns. How to resolve this issue?

1 Answer 1

1

You can pass dictionary to DataFrame.astype for convert only some columns names:

df_all = [i.astype({'phone_no': str}) for i in df_all]

EDIT: You can processing column and assign back:

df_all = [i.assign(phone_no = i['phone_no'].str[0:12]) for i in df_all]
Sign up to request clarification or add additional context in comments.

2 Comments

I've updated the question. Can you please have a look into it?
@NithinReddy - answer was edited.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.