簡體   English   中英

根據Python數據框中的變量打印特定行

[英]Print specific row based on variable in Python dataframe

我有兩個數據框,其中列名稱之一是“塊名稱”,並且列中具有唯一值,但是它們可能不完全順序正確,並且可能存在一些不匹配的情況。

DFS1: 
Block Name  val1 val2
B1           10  100
B2           20  200
B3           30  300

DFS2:
Block Name  val1 val2
B1          100 1000
B4          350 3500
B2          400 5600

我想從DFS1的for循環中獲取“塊名”的每個塊,如果它與DFS2匹配,則從DFS1打印兩行,將其匹配為B1,從DFS2打印兩行,將其匹配為B1,其他匹配行,如B2等,如果不匹配,只需打印出它是來自任何一個表的新行。

我正在編寫如下所示的代碼,但是無法在dfs1.loc命令中傳遞變量。

for b1 in dfs1['Block Name']:
   print(b1)
   for b2 in dfs2['Block Name']:
       print(b2)
       if b1 == b2:
            print(dfs1.loc[dfs1['Block Name'] == 'b2'])

我在dfs.loc上的Google上找不到任何與變量相關的文檔,其中大多數具有固定名稱。

輸出應為:

B1 10 100
B1 100 1000
B2  20  200
B2  400 5600

我不會修改您的嵌套循環,因為它有太多問題(例如,如果要在同一行上打印它們,則需要在print()命令中包括所有行元素),而且如果原始兩個數據幀中的行順序發生了變化。

在嘗試按該順序打印行之前,應先對數據框進行排序。 這是一個僅依賴於Pandas方法的簡單答案:

import pandas as pd
from __future__ import print_function
result = pd.concat([dfs1,dfs2],axis=0).sort_values(['Block Name','val1','val2']).reset_index(drop=True)
print(result)

暫無
暫無

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

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