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

时间:2020-10-30 11:37:37

标签: python pandas dataframe

我有两个数据框

enter image description here enter image description here

下面是两个df的代码

import pandas as pd
df1 = 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,如下所示。任何帮助表示赞赏。请注意,我要按照输出中显示的顺序进行操作。

enter image description here

2 个答案:

答案 0 :(得分:3)

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

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

或将concatDataFrame.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

答案 1 :(得分:0)

尝试一下:

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})