簡體   English   中英

獲取 Pandas 數據框中列的值,將數字添加到值並另存為新數據框

[英]Take values of a column in a Pandas data frame, add numbers to value and save as new data frame

所以我基本上有一個 Pandas 數據框df看起來像這樣:

      0     1
  0  123   234
  1  534   42
  2  213   687
  3  425   123
 ...
 20  

我想要做的是取第 1 列的值,添加從 00 到 20 的所有數字,並將其保存在一個新的數據框newdf 中,並使用第 0 列的相應值。輸出應該如下所示:

      0     1
  0  123   23400
  1  123   23401
  2  123   23402
  3  123   23403   
 ... 
 20  123   23420
 21  534   4200
 ...

我知道我必須使用循環,但我完全不知道如何實現我想要的。 這是我到目前為止想出的:

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 的數字添加到第二列中的值的部分,因為我什至無法讓它工作。

我希望這個問題是可以理解的。 如果我在這篇文章中做錯了什么,請告訴我!

您可以通過首先在 DataFrame 和后綴上執行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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM