我有 10 個小資料框,offer_1_activity,offer_2_activity,...,offer_10_activity。這些 df 中的每一個都有一個公共列客戶 ID。我想將所有這些合并到一個資料幀“offers_activity”中。
from functools import reduce
offers_activity = reduce(lambda left,right: pd.merge(left,right,on=['customer_id'],
how='outer'), offers_df_list)
使用回圈創建“offers_df_list”
offers_df_list=[]
for i in range(1,11):
offers_df_list.append('offer_{}_activity'.format(i))
“offers_df_list”中的值是字串型別。所以我收到以下錯誤
TypeError: Can only merge Series or DataFrame objects, a <class 'str'> was passed
有沒有其他方法可以將此 str 串列轉換為物件型別串列,而不是像下面這樣進行硬編碼?
offers_df_list=[offer_1_activity,offer_2_activity,...,offer_10_activity]
uj5u.com熱心網友回復:
您可以DataFrames從locals()表中訪問-
x_1 = pd.DataFrame({'A': [1, 2, 3], 'B': [1, 2, 3]})
x_2 = pd.DataFrame({'A': [1, 2, 3], 'BB': [11, 12, 13]})
for i in range(1, 3):
xs.append(locals()[f'x_{i}'])
x_all = reduce(lambda left, right: pd.merge(left, right, on=['A'], how='outer'), xs)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/403838.html
標籤:
