我有這個 df 叫feature_df:
Coupon CprTarget bondsec_code
0 3.0 9.908900 2
1 3.5 9.172600 1
2 4.0 9.993500 1
3 3.5 8.985600 4
4 4.0 12.190200 3
... ... ... ...
20707 1.5 5.559933 2
20708 4.0 12.866399 3
20709 5.0 17.982506 1
20710 3.5 12.098302 3
20711 2.5 11.390324 2
我想從中生成一組新的資料幀,這些資料幀由Coupon和分組bondsec_code。因此,例如 Coupon3.0和 bondsec_code資料框1可能如下所示:
Coupon CprTarget bondsec_code
0 3.0 8.408900 1
1 3.0 8.172600 1
2 3.0 8.993500 1
3 3.0 8.985600 1
4 3.0 11.190200 1
我知道我可以通過以下方式手動實作這一點:
coup_3_bondsec_1 = feature_df[(feature_df['Coupon'] == 3.0) & (feature_df['bondsec_code'] == 1)]但我想要通過 for 回圈進行動態處理,這也允許我適當地命名每個資料幀,我只是不確定如何創建它。
運行時供您參考:
print(sorted(feature_df['Coupon'].unique()))
print(sorted(feature_df['bondsec_code'].unique()))
輸出是:
[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]
[0, 1, 2, 3, 4]
所以這些都是我可以擁有的 Coupon 和 bondsec_code 的所有組合。
我知道它看起來像這樣:
dfs = []
for coupon, code in set(feature_df['Coupon']), set(feature_df['bondsec_code']):
cluster = feature_df[(feature_df['Coupon'] == coupon) & (feature_df['bondsec_code'] == code)]
dfs.append(cluster)
但這會引發錯誤:
ValueError: too many values to unpack (expected 2)
編輯我想我想出了一些辦法:
for coupon in set(feature_df['Coupon']):
for code in set(feature_df['bondsec_code']):
cluster = feature_df[(feature_df['Coupon'] == coupon) & (feature_df['bondsec_code'] == code)]
dfs.append(cluster)
這可行,但現在我需要一種方法來分離該串列中的每個 df 并動態命名它,也許使用另一個 for 回圈。理想的名字可能就是bondsec_code_Coupon“1_3”
uj5u.com熱心網友回復:
“動態命名變數”的常用方法是使用dict. 而不是嘗試動態執行以下操作:
var_name_for_abc = "abc"
var_name_for_xyz = "xyz"
答dict:
my_vars = {f'var_name_for_{val}': val for val in ['abc', 'xyz']}
# alternatively:
my_vars = {}
for val in ['abc', 'xyz']:
my_vars[f'var_name_for_{val}'] = val
為了讓您相信這一點,為了實際完成第一個示例,您將使用globals()代表區域變數...作為 a dict,并且無論如何您都會以相同的方式對其進行更新。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/505257.html
上一篇:在for回圈中操作和分組字串
下一篇:使用for回圈計算不同引陣列合
