簡體   English   中英

Python:在 for 循環中創建新列名

[英]Python: Creating new column names in a for loop

我正在嘗試使用 for 循環為 dataframe 制作自定義列 header 名稱。 目前我正在使用兩個 for 循環來遍歷 dataframe,但不知道如何在不對其進行硬編碼的情況下放入新的列標題。 我有

df = pandas.DataFrame({
     'A':[5,3,6,9,2,4],
     'B':[4,5,4,5,5,4],
     'C':[7,8,9,4,2,3],
     'D':[1,3,5,7,1,0],})

result = []
for i in range(len(df.columns)):
         SelectedCol = (df.iloc[:,i])
         for c in range(i+1, len(df.columns)):
                result.append(((SelectedCol+1)/ (df.iloc[:,c]+1)))
            
df1 = pandas.DataFrame(result)
df1=df1.transpose()

在 df 中,取第一列並乘以第二、第三和第四列。 然后代碼采用第二個,並將其乘以第三個和第四個,並在 for 循環中繼續,因此 output 列是“A B”、“A C”、“A D”、“B C”、“B D'和'C D'。

我可以在我的 for 循環中添加什么來提取列名,以便 df1 的每個列名可以是“長 A,短 B”,“長 A,短 C”......最后是“長 C,短 D”

謝謝你的幫助

from itertools import combinations
for x,y in combinations(df.columns,2):
    df['Long '+x+' Short '+y]=df[x]*df[y]
import pandas
from itertools import combinations
df = pandas.DataFrame({
    'A': [5, 3, 6, 9, 2, 4],
    'B': [4, 5, 4, 5, 5, 4],
    'C': [7, 8, 9, 4, 2, 3],
    'D': [1, 3, 5, 7, 1, 0], })
# get all col name
for index, row in df.iteritems():
    print(index)
# get all  combinations
result = combinations(df.iteritems(), 2)
# calc
for name, data in result:
    _name = name[0] + data[0]
    _data = name[1] * data[1]
    df[_name] = _data
print(df)
A
B
C
D
   A  B  C  D  AB  AC  AD  BC  BD  CD
0  5  4  7  1  20  35   5  28   4   7
1  3  5  8  3  15  24   9  40  15  24
2  6  4  9  5  24  54  30  36  20  45
3  9  5  4  7  45  36  63  20  35  28
4  2  5  2  1  10   4   2  10   5   2
5  4  4  3  0  16  12   0  12   0   0

暫無
暫無

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

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