簡體   English   中英

從現有數據框列創建新數據框

[英]Make new dataframe from existing dataframe columns

我有一個Dataframe1 ,我需要從中形成新的Dataframe2 ,如下所示。 如果Dataframe1.name = An1將從Dataframe1 Status列中選擇值,類似地,如果Dataframe1.Name = Bn2將從列Status獲取值。 此外, Timestampid將具有唯一值。 有人可以幫忙嗎?

輸入數據Dataframe1

ID 時間戳 姓名 地位
1 02:15:00 一種 錯誤的
1 02:15:00 真的
2 03:00:00 一種 真的
2 03:00:00 錯誤的

輸出數據Dataframe2

ID 時間戳 n1 n2
1 02:15:00 錯誤的 真的
2 03:00:00 真的 錯誤的

您要做的是對具有特殊名稱的數據進行透視。 如果您將Ab值重命名為n1n2那么您唯一要做的就是使用pandas.pivot_table函數。 因為作為它的聚合函數,它使用平均字符串不能開箱即用。 您必須提供自己的聚合函數。 因為在我們的情況下,每一行都是唯一的,我們可以給聚合函數以獲取該行的值。

dataframe1['Name'] = dataframe1['Name'].replace({'A': 'n1', 'b': 'n2'})
dataframe1.pivot_table(index=['id', 'Timestamp'], 
                       columns='Name', 
                       values='Status', 
                       aggfunc=lambda x:x).reset_index()

您可以使用pandas.pivot_table

df2 = df.pivot_table(index=['id','Timestamp'], columns='Name', values='Status').reset_index().set_index('id')
df2.columns = ['Timestamp','n1','n2']

輸出:

>>> df2
    Timestamp   n1     n2
id  
1   02:15:00    FALSE   TRUE
2   03:00:00    TRUE    FALSE

使用 pivot_table 然后調整結果標題。

import pandas as pd
df = pd.read_excel('test.xls', index_col = False)

df2 = df.pivot_table(index = ['id', 'Timestamp'], columns = 'Name', values = 'Status').reset_index().rename_axis(None, axis=1).rename(columns = {'A': 'n1', 'B': 'n2'})


print(df2)

暫無
暫無

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

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