为了账号安全,请及时绑定邮箱和手机立即绑定

Python:如何执行以下数据框操作

Python:如何执行以下数据框操作

哔哔one 2024-01-24 20:44:01
我有两个数据框两个 dfs 的代码如下import pandas as pddf1 = pd.DataFrame({'income1': [-13036.0, 1200.0, -12077.5, 1100.0],                   'income2': [-30360.0, 2000.0, -2277.5, 1500.0],})df2 = pd.DataFrame({'name1': ['abc', 'deb', 'hghg', 'gfgf'],                   'name2': ['dfd', 'dfd1', 'df3df', 'fggfg'],})我想将 2 个 df 组合起来,得到一个 df,其名称与相应的收入值相对应,如下所示。任何帮助表示赞赏。请注意,我希望它的顺序与输出中所示的顺序相同。
查看完整描述

2 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

这里可以将值转换为 numpy 数组并通过传递给DataFrame构造函数进行展平:


df = pd.DataFrame({'Name': np.ravel(df2.to_numpy()), 

                   'Income': np.ravel(df1.to_numpy())})

print (df)


    Name   Income

0    abc -13036.0

1    dfd -30360.0

2    deb   1200.0

3   dfd1   2000.0

4   hghg -12077.5

5  df3df  -2277.5

6   gfgf   1100.0

7  fggfg   1500.0

或者concat使用DataFrame.stackSeries.reset_index作为默认索引值:

df = pd.concat([df2.stack().reset_index(drop=True), 

                df1.stack().reset_index(drop=True)],axis=1, keys=['Name','Income'])

print (df)

    Name   Income

0    abc -13036.0

1    dfd -30360.0

2    deb   1200.0

3   dfd1   2000.0

4   hghg -12077.5

5  df3df  -2277.5

6   gfgf   1100.0

7  fggfg   1500.0


查看完整回答
反对 回复 2024-01-24
?
忽然笑

TA贡献1806条经验 获得超5个赞

尝试这个:


incomes = pd.concat([df1.income1, df1.income2], axis = 0)

names   = pd.concat([df2.name1  , df2.name2]  , axis = 0)


df = pd.DataFrame({'Name': names, 'Incomes': incomes})


查看完整回答
反对 回复 2024-01-24
  • 2 回答
  • 0 关注
  • 40 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信