通过复制1行并附加到n行数据帧

时间:2017-10-08 12:50:22

标签: python pandas dataframe

考虑以下数据框,d1作为学生信息,d2作为主题等级

>>> data = [['Alice',18]]
>>> d1 = pd.DataFrame(data,columns=['Name','Age'])
>>> d1
    Name  Age
0  Alice   18
>>> data2 = [['Science','A'],['Math','C'],['English','B']]
>>> d2 = pd.DataFrame(data2, columns=['Subject','Grade'])
>>> d2
   Subject Grade
0  Science     A
1     Math     C
2  English     B

我想将d1和d2结合起来

    Name  Age  Subject Grade
0  Alice   18  Science     A
1  Alice   18     Math     C
2  Alice   18  English     B

4 个答案:

答案 0 :(得分:4)

使用merge + assign + drop进行交叉联接 - 如果要在RouteReuseStrategy中合并多行,可以使用此解决方案:

<?php 
function data((string)$data)
{
echo $data;

}

data(123);

concatreindex的另一种解决方案:

d1

答案 1 :(得分:2)

您可以使用assign

In [101]: d2.assign(**d1.iloc[0])
Out[101]:
   Subject Grade  Age   Name
0  Science     A   18  Alice
1     Math     C   18  Alice
2  English     B   18  Alice

或者,

In [102]: d2.assign(**d1.iloc[0].to_dict())
Out[102]:
   Subject Grade  Age   Name
0  Science     A   18  Alice
1     Math     C   18  Alice
2  English     B   18  Alice

答案 2 :(得分:2)

你可以使用concat和ffill,即

ndf = pd.concat([d1,d2],1).ffill()
   Name   Age  Subject Grade
0  Alice  18.0  Science     A
1  Alice  18.0     Math     C
2  Alice  18.0  English     B

答案 3 :(得分:0)

为什么不重建Dataframe

pd.DataFrame([data[0]+x for x in data2],columns=['Name','Age','Subject', 'Grade'])
Out[279]: 
    Name  Age  Subject Grade
0  Alice   18  Science     A
1  Alice   18     Math     C
2  Alice   18  English     B