簡體   English   中英

從熊貓DataFrame切出唯一的行以存儲在單獨的DataFrame中

[英]Slicing out unique rows from a pandas DataFrame to store in separate DataFrame

解決了:

# Split and save all unique parts to separate CSV
for unique_part in df['Part'].unique():
    df.loc[df['Part'] == unique_part].to_csv(f'Part_{unique_part}.csv')

我有一張表格,其中包含零件的生產數據以及在生產過程中記錄的變量。 我需要將所有列切成唯一的零件行。 IE將部分#1,#2和#3的列的所有列進行切片,並放入單獨的數據幀中。

格式:

零件| 變量1 | 變量2等

1 ----------- --------------- X X

1 ----------- --------------- X X

2 ----------- --------------- X X

2 ----------- --------------- X X

2 ----------- --------------- X X

2 ----------- --------------- X X

2 ----------- --------------- X X

2 ----------- --------------- X X

2 ----------- --------------- X X

3 ----------- --------------- X X

3 ----------- --------------- X X

3 ----------- --------------- X X

我已經嘗試過創建字典進行分組

dict = {k: v for k, v in df.groupby('Part')}

這不起作用,因為我無法使用正確的格式將dict從Data正確轉換為DataFrame

我也嘗試創建一個變量來存儲所有唯一的零件編號,我只是不知道如何遍歷主數據框以切出每個唯一的零件行部分

part_num = df['Part'].unique()

總而言之,我需要為具有唯一部件號ID的每個行簇的所有變量列創建單獨的數據框。

您可以對groupby進行分組,然后apply將每個組轉換為字典列表,然后將groupby轉換為dict,其中每個鍵都是唯一的聲Part值。

就像是:

df = pd.DataFrame({
    'Part': [1,1,1,3,3,2,2,2],
    'other': ['a','b','c','d','e','f','g','h']
})

d = df.groupby('Part').apply(lambda d: d.to_dict('records')).to_dict()
print d

將打印

{1: [{'Part': 1, 'other': 'a'},
  {'Part': 1, 'other': 'b'},
  {'Part': 1, 'other': 'c'}],
 2: [{'Part': 2, 'other': 'f'},
  {'Part': 2, 'other': 'g'},
  {'Part': 2, 'other': 'h'}],
 3: [{'Part': 3, 'other': 'd'}, {'Part': 3, 'other': 'e'}]}

認為您在groupby的正確軌道上

df = pd.DataFrame({"Part": [1, 1, 2, 2],
                    "Var1": [10, 11, 12, 13],
                    "Var2": [20, 21, 22, 23]})   
dfg = df.groupby("Part")

df1 = dfg.get_group(1)
df2 = dfg.get_group(2)

您想對數據做什么? 您是否真的需要創建一堆單獨的數據幀? 下面的示例遍歷每個組(每個部件號)並打印。 您可以使用相同的方法來做某事或從每個組中獲取某事而無需創建單獨的數據幀。

for grp in dfg.groups:
    print(dfg.get_group(grp))
    print()

輸出:

   Part  Var1  Var2
0     1    10    20
1     1    11    21

   Part  Var1  Var2
2     2    12    22
3     2    13    23

暫無
暫無

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

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