簡體   English   中英

從 pd.series 循環分配 pandas 中的列名

[英]assign column names in pandas from pd.series an loop

假設我的 df:

A User1 User2
1 0       0
2 1       1
3 1       0

我想在 dataframe 中創建另一列,它是列user1加上user的總和所以很簡單: df['sum_result_Newcolum'] = df['user1']+df['user2'] 所以它看起來像這樣:

 A User1 User2   sum_result_Newcolum
    1 0       0   0
    2 1       1   2
    3 1       0   1

但我有 panda.series 看起來像這樣:

    0
0   AC.IR
1   AC.PO
2   B.0
3   B.1

結束等所以我想for語句在那里運行通過 pd.series 並將值添加到列名。 所以那個問題,我嘗試這樣的事情但沒有成功:

df['sum_result_'+ {cv_details.get(0)}]=df['user1']+df['user2']
df['sum_result_'+ cv_details.get(0)]=df['user1']+df['user2']
df['sum_result_'+ cv_details[0]]=df['user1']+df['user2']
df['sum_result_'+ cv_details.iloc[0]]=df['user1']+df['user2']

所有時間最好的結果是列名:“sum_result_Action ...”

也許解決方案將 pd.series 轉換為框架?

  • 不是 100% 清楚您的預期結果是什么。
  • 如果您想要為系列中的每個值創建一個新列
    • assign ** kwargs可以構建為字典理解
    • 從您的示例代碼中,您定義了一個 static 計算User1 + User2
import io
import pandas as pd

df = pd.read_csv(io.StringIO("""A User1 User2
1 0       0
2 1       1
3 1       0"""), sep="\s+")

cv_details = pd.Series(['AC.IR', 'AC.PO', 'B.0', 'B.1'])

df.assign(**{f"sum_result_{v}":df["User1"]+df["User2"] for v in cv_details})

A 用戶1 用戶2 sum_result_AC.IR sum_result_AC.PO sum_result_B.0 sum_result_B.1
0 1個 0 0 0 0 0 0
1個 2個 1個 1個 2個 2個 2個 2個
2個 3個 1個 0 1個 1個 1個 1個

暫無
暫無

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

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