所以我基本上有一個 Pandas 數(shù)據(jù)框df看起來像這樣: 0 1 0 123 234 1 534 42 2 213 687 3 425 123 ... 20 我想要做的是取第 1 列的值,添加從 00 到 20 的所有數(shù)字,并將其保存在一個新的數(shù)據(jù)框newdf 中,并使用第 0 列的相應(yīng)值。輸出應(yīng)該如下所示: 0 1 0 123 23400 1 123 23401 2 123 23402 3 123 23403 ... 20 123 23420 21 534 4200 ...我知道我必須使用循環(huán),但我完全不知道如何實現(xiàn)我想要的。這是我到目前為止想出的:newdf = pd.DataFrame()for x in df[1]: for y in range(len(df)): for one in range(0,9): newdf.append(df.iloc[y,0], df.iloc[y,1]) for two in range(10,20): newdf.append(df.iloc[y,0], df.iloc[y,1])這缺少將 00 到 20 的數(shù)字添加到第二列中的值的部分,因為我什至無法讓它工作。我希望這個問題是可以理解的。如果我在這篇文章中做錯了什么,請告訴我!
1 回答

眼眸繁星
TA貢獻1873條經(jīng)驗 獲得超9個贊
您可以通過首先在 DataFrame 和后綴上執(zhí)行CROSS JOIN(笛卡爾積)來做到這一點。
u = pd.DataFrame(dict(suf=range(20), key=1))
v = df.assign(key=1).merge(u, on='key').drop('key', 1)
v.iloc[:,1] = v.iloc[:,1].astype(str).add(
v.pop('suf').astype(str).str.zfill(2)).astype(int)
v.head()
0 1
0 123 23400
1 123 23401
2 123 23402
3 123 23403
4 123 23404
添加回答
舉報
0/150
提交
取消