获取数据框中某列的值,向值中添加数字并另存为新数据框

2024-03-29 06:32:14 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我基本上有一个熊猫数据帧,它看起来像这样:

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

我要做的是取第1列的值,把从00到20的所有数字相加,然后用第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之间的数字与第二列中的值相加的部分,因为我甚至无法让它工作

我希望这个问题可以理解。如果我在这个帖子里做错了什么,请告诉我


Tags: 数据indataframedfforlenrange数字
1条回答
网友
1楼 · 发布于 2024-03-29 06:32:14

您可以通过首先对数据帧和后缀执行CROSS JOIN (Cartesian Product)来实现这一点

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

相关问题 更多 >