1
創建dataframe2基於列的組合,這是一個類似問題:cross join/merge to create dataframe of combinations (order doesn't matter)交叉連接/合併dataframe1在dataframe1
df = pd.DataFrame({'zone2': ['IL', 'IL-1', 'IL-3', 'IL'],
'city': ['Chicago', 'St.Louis', 'Monmouth', 'DesMoines'],
'zone1': ['Mid', 'Mid', 'Mid', 'Mid']})
我想創建列=城市的所有組合的第二個數據幀。
這是我這樣做的方式,但必須有一種有效的方式來以更少的步驟完成此操作。
df2 = pd.DataFrame(list(itertools.combinations(list(df['city']), 2)))
df2.columns = ['city_1', 'city_2']
df2 = df2.merge(df, left_on='city_1', right_on='city').merge(df, left_on='city_2', right_on='city', suffixes=('_x', '_y'))
df2.drop(['city_x', 'city_y'], axis=1, inplace=True)
>>> df2
city_1 city_2 zone1_x zone2_x zone1_y zone2_y
0 Chicago St.Louis Mid IL Mid IL-1
1 Chicago Monmouth Mid IL Mid IL-3
2 St.Louis Monmouth Mid IL-1 Mid IL-3
3 Chicago DesMoines Mid IL Mid IL
4 St.Louis DesMoines Mid IL-1 Mid IL
5 Monmouth DesMoines Mid IL-3 Mid IL>
感謝亞歷山大。哇,這相當複雜。我很驚訝,沒有內置的方法來實現我想要的框架。 – codingknob