拆分并平铺Pandas数据帧

2024-05-12 22:50:21 发布

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

我有这个数据帧:

df:

id .  city .  state . person1 . P1phone1 . P1phone2 . person2 . P2phone1 . P2phone2
1 .   Ghut .  TY    . Jeff    . 32131    . 4324     . Bill    . 213123   . 31231   
2 .   Ffhs .  TY    . Ron     . 32131    . 4324     . Bill    . 213123   . 31231   
3 .   Tyuf .  TY    . Jeff    . 32131    . 4324     . Tyler   . 213123   . 31231   

我希望它看起来像这样:

^{pr2}$

我很难做到这一点。有人能帮忙吗?在


Tags: 数据idcitydfstatejeffbillperson1
3条回答

试试这个兄弟

   pd.concat(df.loc[:,['id','city','state','person1','P1phone1','P1phone2']].
rename(columns = {'person1' : 'person', 'P1phone1' : 'phone1', 'P1phone2' : 'phone2'),
    df.loc[:,['id','city','state','person2','P2phone1','P2phone2']].
rename(columns = {'person1' : 'person', 'P2phone1' : 'phone1', 'P2phone2' : 'phone2'), axis = 0)
df

id   city   state  person1  P1phone1  P1phone2  person2  P2phone1  P2phone2
1    Ghut   TY     Jeff     32131     4324      Bill     213123    31231   
2    Ffhs   TY     Ron      32131     4324      Bill     213123    31231   
3    Tyuf   TY     Jeff     32131     4324      Tyler    213123    31231  

df = df.set_index(['city', 'state'])
df.columns = np.tile(df.columns[:3].values,  2)

使用df.append

^{pr2}$

使用pd.concat

df = pd.concat([df.iloc[:, :3].append(df.iloc[:, 3:])]).reset_index()
df 

   city state person1  P1phone1  P1phone2
0  Ghut    TY    Jeff     32131      4324
1  Ffhs    TY     Ron     32131      4324
2  Tyuf    TY    Jeff     32131      4324
3  Ghut    TY    Bill    213123     31231
4  Ffhs    TY    Bill    213123     31231
5  Tyuf    TY   Tyler    213123     31231

您只需将数据帧分成两部分:

In [20]: df1 = df[['city','state','person1','P1phone1','P1phone2']]

In [21]: df2 = df[['city','state','person2','P2phone1','P2phone2']]

然后确保它们有相同的列:

^{pr2}$

然后将一个附加到另一个上:

In [29]: df1.append(df2)
Out[29]: 
   city state person  phone1 phone2
0  Ghut    TY   Jeff   32131   4324
1  Ffhs    TY    Ron   32131   4324
2  Tyuf    TY   Jeff   32131   4324
0  Ghut    TY   Bill  213123  31231
1  Ffhs    TY   Bill  213123  31231
2  Tyuf    TY  Tyler  213123  31231

相关问题 更多 >