![](/img/trans.png)
[英]Python pandas replace NaN values of one column(A) by mode (of same column -A) with respect to another column in pandas dataframe
[英]Move certain pandas dataframe column values from one column to another and replace old position with Nan
我有一個像這樣的 dataframe:
data = {"Name": ["Jason", "Jason", "Jason", "Jason", "Pat", "Amy", "Amy"]}
df = pd.DataFrame(data)
Name
0 Jason
1 Jason
2 Jason
3 Jason
4 Pat
5 Amy
6 Amy
我需要它看起來像這樣:
Name Name2 Name3
0 Jason Nan Nan
1 Jason Nan Nan
2 Jason Nan Nan
3 Jason Nan Nan
4 Nan Pat Nan
5 Nan Nan Amy
6 Nan Nan Amy
我可以按照我想要的方向手動創建一些東西 go 但不確定如何通過在“名稱”列中找到的唯一值的計數來自動創建新列。 我還需要新列中的值位於同一行索引上。 我發現列表也總是會發生變化,所以使用 'unique_names[0]' 並不總是有效。 這是我到目前為止嘗試過但卡住的方法。 此外,這只是一列的示例,但實際上會有大約 17 個具有不同值的類似列。 謝謝
unique_names = list(set([p for p in df["Name"]]))
# ['Pat', 'Jason', 'Amy']
count = len(unique_names) # Trying to fit this somewhere to give it a count to refer to
# 3
for item in df["name"]:
if unique_names[0] == item:
df["new_name"] = pd.Series(item)
Name New_name
0 Jason Pat
1 Jason NaN
2 Jason NaN
3 Jason NaN
4 Pat NaN
5 Amy NaN
6 Amy NaN
我們可以做str.get_dummies
然后mul
s=df.Name.str.get_dummies().mul(df.Name,axis=0).replace('',np.nan)
s
Out[54]:
Amy Jason Pat
0 NaN Jason NaN
1 NaN Jason NaN
2 NaN Jason NaN
3 NaN Jason NaN
4 NaN NaN Pat
5 Amy NaN NaN
6 Amy NaN NaN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.