例如,我有 5 個資料框,例如
df1 df2 df3 df4 df4
在每一列中都有一個名為“phone_no”的列。
我正在嘗試使用 for 回圈更改 phone_no 的資料型別,但它不起作用。下面是代碼
df_all = [df1, df2, df3, df4, df5]
df_all = [i['phone_no'].astype(str) for i in df_all]
當我嘗試列印 df_all 時,它會回傳類似的輸出
[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]
唯一的問題是,如果我運行上面的代碼,它只會從每個資料幀回傳 phone_no 列,而不是回傳完整的資料幀。如何解決這個問題?
之后如何執行以下代碼
df_all = [i['phone_no'].str[0:12] for i in df_all]
輸出是
[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]
上面的代碼只會在執行切片后從所有資料幀中回傳 phone_no 列。它會錯過另一列。如何解決這個問題?
uj5u.com熱心網友回復:
您可以將字典傳遞給DataFrame.astype僅轉換某些列名稱:
df_all = [i.astype({'phone_no': str}) for i in df_all]
編輯:您可以處理列并分配回:
df_all = [i.assign(phone_no = i['phone_no'].str[0:12]) for i in df_all]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446224.html
標籤:Python python-3.x 熊猫 数据框 for循环
