簡體   English   中英

Python Dataframe:pivot 行作為列

[英]Python Dataframe: pivot rows as columns

我有來自不同電台的原始文件。 當我將它們組合成 dataframe 時,我看到三列具有匹配的 ID 和名稱以及不同的組件。 我想將其轉換為 dataframe,其中名稱條目成為列名代碼:

df = 
      id                      name      component
0      1             Serial Number          103
1      2              Station Name           DC
2      1             Serial Number          114
3      2              Station Name           CA
4      1             Serial Number          147
5      2              Station Name           FL

預期答案:

new_df = 
      Station Name      Serial Number     
0     DC                  103
1     CA                  114
2     FL                  147

我的答案:

# Solution1
df.pivot_table('id','name','component')
name 
NaN NaN NaN NaN
# Solution2
df.pivot(index=None,columns='name')['component']
name 
NaN NaN NaN NaN

我沒有得到想要的答案。 有什么幫助嗎?

首先,您必須使每 2 行具有相同的 ID,之后您可以使用 pivot 表。

import pandas as pd

df = pd.DataFrame({'id': ["1", "2", "1", "2", "1", "2"],
                    'name': ["Serial Number", "Station Name", "Serial Number", "Station Name", "Serial Number", "Station Name"],
                   'component': ["103", "DC", "114", "CA", "147", "FL"]})
new_column = [x//2+1 for x in range(len(df))]
df["id"] = new_column

df = df.pivot(index='id',columns='name')['component']

如果您的Serial Number就在Station Name之前,您可以在name列上pivot然后合並每兩行:

df_ = df.pivot(columns='name', values='component').groupby(df.index // 2).first()
print(df_)

name Serial Number Station Name
0              103           DC
1              114           CA
2              147           FL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM