我有一個資料框
Type Numer master width
xyz 465_0 123 305
xyz 465_0 123 305
xyz 465_0 123 305
xyz 465_0 123 315
xyz 465_1 123 305
xyz 465_1 123 305
xyz 465_1 123 305
xyz 465_1 123 315
xyz 465_2 123 305
xyz 465_2 123 305
xyz 465_2 123 305
xyz 465_2 123 315
xyz 465_3 123 305
xyz 465_3 123 305
xyz 465_3 123 305
xyz 465_3 123 315
從這里我需要以下DataFrame
Type Numer master width
xyz 465_0 123 305
xyz 465_1 123 305
xyz 465_2 123 305
xyz 465_3 123 315
我的嘗試是:
df[['Numer1', 'dig']] = df['Numer'].str.split("_", expand=True)
df = df.drop('Numer', axis = 1)
df.drop_duplicates()
但這并沒有給我結果。我想以通用的方式撰寫它,因為我有多種型別。
資料:
{'Type': ['xyz', 'xyz', 'xyz', 'xyz', 'xyz', 'xyz', 'xyz', 'xyz',
'xyz', 'xyz', 'xyz', 'xyz', 'xyz', 'xyz', 'xyz', 'xyz'],
'Numer': ['465_0', '465_0', '465_0', '465_0', '465_1', '465_1', '465_1', '465_1',
'465_2', '465_2', '465_2', '465_2', '465_3', '465_3', '465_3', '465_3'],
'master': [123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123],
'width': [305, 305, 305, 315, 305, 305, 305, 315, 305, 305, 305, 315, 305, 305, 305, 315]}
uj5u.com熱心網友回復:
我們可以使用groupby cumcount為每個“數字”創建一個特定于組的排名;然后過濾“Numer”中的后綴與組中的排名匹配的行:
out = df[df['Numer'].str.split('_').str[1].astype(int) == df.groupby('Numer').cumcount()].drop(columns='rank')
輸出:
Type Numer master width
0 xyz 465_0 123 305
5 xyz 465_1 123 305
10 xyz 465_2 123 305
15 xyz 465_3 123 315
uj5u.com熱心網友回復:
我從您的問題中了解到的是,您正試圖將width每個Numer組中的模式“折疊”成DataFrame僅具有唯一組 ( Numer) 值和相同模式的width模式
一種方法是在反轉組后使用庫中的zip_longest函式-itertools
from itertools import zip_longest
rev_zip_longest = list(zip_longest(*[reversed(df[col].unique()) for col in df.columns]))
# [('xyz', '465_3', 123, 315),
# (None, '465_2', None, 305),
# (None, '465_1', None, None),
# (None, '465_0', None, None)]
df2 = pd.DataFrame(rev_zip_longest)
df2.columns = df.columns
df2 = df2.fillna(method='ffill')
# Type Numer master width
# 0 xyz 465_3 123.0 315.0
# 1 xyz 465_2 123.0 305.0
# 2 xyz 465_1 123.0 305.0
# 3 xyz 465_0 123.0 305.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/439640.html
標籤:Python python-3.x 熊猫 数据框 熊猫-groupby
上一篇:資料已插入資料庫但具有空值
