第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 pandas 數(shù)據(jù)框中找到缺失的一對并用虛擬值填充

如何在 pandas 數(shù)據(jù)框中找到缺失的一對并用虛擬值填充

寶慕林4294392 2024-01-12 10:31:34
這里我有一個虛擬數(shù)據(jù)框:import pandas as pddf = pd.DataFrame({'Date':[2019-08-06,2019-08-08,2019-08-01,2019-10-12], 'Name':['A','A','B','C'], 'Type':['X','Y','Y','Z']})有 3 個潛在值Type--- W,X,Y,Z 我想找到缺失的一對Name-Type并用日期值'填充插入行0000-00-00'因此,在此示例中,所有 A、B、C 都沒有類型 W / B,C 沒有 X / C 沒有 Y / A,B 沒有 Z因此,我必須添加 8 行日期0000-00-00總而言之,我需要做的是——查找缺失的兩列對,并用虛擬值填充其他特定行。編輯 --- 由于我發(fā)現(xiàn)了具有以下解決方案的 ValueError,因此我編輯了虛擬數(shù)據(jù)框。import pandas as pddf = pd.DataFrame({'Date':[2019-08-06,2019-08-07,2019-08-08,2019-08-01,2019-10-12], 'Name':['A','A','A','B','C'], 'Type':['X','X','Y','Y','Z']})
查看完整描述

1 回答

?
慕標5832272

TA貢獻1966條經(jīng)驗 獲得超4個贊

使用MultiIndex.from_productby 列中所有組合的級別 byMultiIndex.levels傳遞到DataFrame.reindex

df = df.set_index(['Name','Type'])


df = df.reindex(pd.MultiIndex.from_product(df.index.levels), fill_value='0000-00-00')

print (df)

? ? ? ? ? ? ? ? ?Date

Name Type? ? ? ? ? ??

A? ? X? ? ?2019-08-06

? ? ?Y? ? ?2019-08-08

? ? ?Z? ? ?0000-00-00

B? ? X? ? ?0000-00-00

? ? ?Y? ? ?2019-08-01

? ? ?Z? ? ?0000-00-00

C? ? X? ? ?0000-00-00

? ? ?Y? ? ?0000-00-00

? ? ?Z? ? ?2019-10-12

? ? ?

編輯:錯誤意味著,ValueError:cannot handle a non-unique multi-index!中存在重復(fù)對,處理數(shù)據(jù)的解決方案是:NameType


df = pd.DataFrame({'Date':['2019-08-06','2019-08-08','2019-08-01','2019-10-12'],?

? ? ? ? ? ? ? ? ? ?'Name':['A','A','B','C'],?

? ? ? ? ? ? ? ? ? ?'Type':['X','X','Y','Z'],?

? ? ? ? ? ? ? ? ? ?'col':list('abcd')})


print (df)

? ? ? ? ?Date Name Type col

0? 2019-08-06? ? A? ? X? ?a

1? 2019-08-08? ? A? ? X? ?b <-duplicated pair `A, X` - Name, Type

2? 2019-08-01? ? B? ? Y? ?c

3? 2019-10-12? ? C? ? Z? ?d

解決方案是先通過 刪除重復(fù)項DataFrame.duplicated,然后應(yīng)用于reindex所有組合:

mask = df.duplicated(['Name','Type'])

df1 = df[~mask].set_index(['Name','Type'])


df1 = (df1.reindex(pd.MultiIndex.from_product(df1.index.levels))

? ? ? ? ? .fillna({'Date':'0000-00-00', 'col':'missing'}).reset_index())

print (df1)

? Name Type? ? ? ? Date? ? ? col

0? ? A? ? X? 2019-08-06? ? ? ? a

1? ? A? ? Y? 0000-00-00? missing

2? ? A? ? Z? 0000-00-00? missing

3? ? B? ? X? 0000-00-00? missing

4? ? B? ? Y? 2019-08-01? ? ? ? c

5? ? B? ? Z? 0000-00-00? missing

6? ? C? ? X? 0000-00-00? missing

7? ? C? ? Y? 0000-00-00? missing

8? ? C? ? Z? 2019-10-12? ? ? ? d

最后添加所有重復(fù)的行concat

df = pd.concat([df1, df[mask]]).sort_values(['Name','Type'], ignore_index=True)

print (df)

? Name Type? ? ? ? Date? ? ? col

0? ? A? ? X? 2019-08-06? ? ? ? a

1? ? A? ? X? 2019-08-08? ? ? ? b

2? ? A? ? Y? 0000-00-00? missing

3? ? A? ? Z? 0000-00-00? missing

4? ? B? ? X? 0000-00-00? missing

5? ? B? ? Y? 2019-08-01? ? ? ? c

6? ? B? ? Z? 0000-00-00? missing

7? ? C? ? X? 0000-00-00? missing

8? ? C? ? Y? 0000-00-00? missing

9? ? C? ? Z? 2019-10-12? ? ? ? d


查看完整回答
反對 回復(fù) 2024-01-12
  • 1 回答
  • 0 關(guān)注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號