簡體   English   中英

在 DataFrame Python 上一次遍歷行和列

[英]Iterating form over rows and columns at once on DataFrame Python

我有一個數據集,比如說 df,其中包含以下信息。 基本上我想遍歷列並創建新列

df

ID Day1 Day2....Day10  

1  High  Low  

2  Medium High  

3  Low    Medium  

4  Low    Low  

5  High   High  

.   .      .  
.   .      .  
.   .      .  

現在,我想要下面的 output:對於每個 Day1 到 Day10,我想創建從 Tag1 到 Tag10 的新列。

ID Day1 Day2....Day10 Tag1 Tag2.......Tag10  

1  High  Low........  3     1        

2  Medium High        2     3

3  Low    Medium      1     2

4  Low    Low         1     1

5  High   Medium      3     2

.   .      .          .     .  
.   .      .          .     .
.   .      .          .     .  

我已經嘗試過打擊代碼,但它似乎不起作用

df1=df.reindex(columns=[*df.columns.tolist(),'Tag1','Tag2','Tag3','Tag4','Tag5','Tag6','Tag7','Tag8','Tag9','Tag10'],fill_value='NA')

days=['Tag1','Tag2','Tag3','Tag4','Tag5','Tag6','Tag7','Tag8','Tag9','Tag10']

for j in days:
    for i in range(df.shape[0]):
        if df[i]=='High':
            df[i,j]=1
        else:
            df[i,j]=0
    j+=1

DataFrame.filter用於Day列,然后使用DataFrame.replace ,將列名和 append 更改為DataFrame.join的原始名稱

d = {"Low": 1, "Medium": 2, "High": 3}
f = lambda x: x.replace('Day','Tag')
df = df.join(df.filter(like='Day').replace(d).rename(columns=f))
print (df)
   ID    Day1    Day2  Tag1  Tag2
0   1    High     Low     3     1
1   2  Medium    High     2     3
2   3     Low  Medium     1     2
3   4     Low     Low     1     1
4   5    High    High     3     3

首先,您必須准備一個包含鍵值對的映射字典,其中鍵是Day列中的條目,而值是您要在 Tag 列中分配相應條目的那個。 然后您可以使用Series.map function 到 map 給定Day col 中的每個條目到字典中的相應值,然后將其分配給新的Tag列。

用這個:

import re

mapping = {"High": 3, "Medium": 2, "Low": 1}
for col in df.columns:
    mobj = re.search(r"Day(\d+)", col)
    if mobj:
        df[ f"Tag{mobj.group(1)}"] = df[col].map(mapping) #--> map the values in dictionary

print(df)

樣本結果:

   ID    Day1    Day2  Tag1  Tag2
0   1    High     Low     3     1
1   2  Medium    High     2     3
2   3     Low  Medium     1     2
3   4     Low     Low     1     1
4   5    High    High     3     3

暫無
暫無

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

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