[英]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.