亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

通過索引符號而不是列名稱選擇數據框中的列

通過索引符號而不是列名稱選擇數據框中的列

慕村9548890 2023-09-19 14:37:16
我想使用條目“開始”df_D從給定的輸入創建一個df作為行索引和列索引的參考。我不想使用列名A,B, C等。相反,我希望使用索引,因為序列始終是“START”的前 3 列和最后 3 列,即類似n,n+1,n+2, n+5,n+6,n+7輸入:df = pd.DataFrame({'A':['jfgh',23,'Ndfg',34,0,56],'B':['jfgh',23,'START',34,0,56], 'C':['cvb',7,'dsfgA',65,47,3],'D':['rrb',7,'gfd',3,0,7],'E':['dfg',7,'gfd',5,12,1],'F':['dfg',7,'sdfA',5,0,4],'G':['dfg',7,'sdA',5,8,9],'H':['dfg',7,'gfA',5,0,8],'I':['dfg',7,'sdfA',5,7,23]})輸出:      A      B      C    D    E     F    G    H     I0  jfgh   jfgh    cvb  rrb  dfg   dfg  dfg  dfg   dfg1    23     23      7    7    7     7    7    7     72  Ndfg  START  dsfgA  gfd  gfd  sdfA  sdA  gfA  sdfA3    34     34     65    3    5     5    5    5     54     0      0     47    0   12     0    8    0     75    56     56      3    7    1     4    9    8    23所需輸出: df_D 手動創建    B   C  D  G  H   I0   0  47  0  8  0   71  56   3  7  9  8  23嘗試1:for index in range(len(df)):    if str(df.loc[index,'C']).startswith('START'):        df_D = df.iloc[index+1:len(df), [1,2,3,6,7,8]]        break 結果輸出:Empty DataFrameColumns: [B, C, D, G, H, I]Index: []我哪里出錯了?
查看完整描述

2 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

我們可以使用它np.where來查找起始索引。然后使用ilocwithnp._r來創建我們的切片:


start_col = np.where(df.eq("START"))[1][0]

cols = df.shape[1]

col_select = np.r_[start_col: start_col+3, cols-3: cols]


df.iloc[-2:, col_select]

    B   C  D  G  H   I

4   0  47  0  8  0   7

5  56   3  7  9  8  23


查看完整回答
反對 回復 2023-09-19
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

步驟0:初始化一個空列表k

第 1 步:使用 df.shape[1] "START" 上的 for 循環遍歷所有列

步驟 2:迭代每列中的所有行我使用 df 執行此操作。形狀[0]

第三步:搜索“開始”

第 4 步:找到后存儲列號。和變量中的行號。

第 5 步:使用這些變量來索引所需的所有行和列。所以你使用 row+1 因為你想要 START 下面的所有內容和 col ,col+ 1 等等。

步驟 6:將數據幀添加到列表 k

最后一步:您可以看到 k[0] 給出了 start 的第一個實例,k[1] 給出了 start 的第二個實例,您可以將其用作更通用的代碼。如果您不希望所有實例在找到第一個數據幀后立即使用中斷。

k=[]

for i in range(df.shape[0]):

    for y in range(df.shape[0]):

        if df.iloc[y,i] == 'START':

            col = i

            row = y

            k.append(df.iloc[row+1:,[col,col+1,col+2,-3,-2,-1]])    

print("first START")

print(k[0])

print("\n Second START")

print(k[1])


查看完整回答
反對 回復 2023-09-19
  • 2 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號