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

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

如何找到兩個數據框中都沒有出現的數據(特別是列名)?

如何找到兩個數據框中都沒有出現的數據(特別是列名)?

鳳凰求蠱 2022-06-22 17:50:36
我有 2 個數據框(足夠大)。他們有列:ch_name、時間、值?,F在,df(第一個數據幀)有 160 個通道,但 df1(第二個數據幀)有 161 個通道。如何識別過度的頻道名稱(df 沒有此頻道但 df1 有)。有時通道名稱在 2 個數據幀之間不匹配。最后,我想要 2 個具有相同通道名稱和編號的數據幀(單獨)。我想為兩個數據框制作 160 個頻道。我不想加入或連接它們。                        ch_name                time     value  interval0     ADCS.Attitude_-_Omega_Y_deg_s 2019-01-05 00:00:00 -0.059533      60.01     ADCS.Attitude_-_Omega_Y_deg_s 2019-01-05 00:01:00 -0.063133      60.02     ADCS.Attitude_-_Omega_Y_deg_s 2019-01-05 00:02:00 -0.057533      60.03     ADCS.Attitude_-_Omega_Y_deg_s 2019-01-05 00:03:00 -0.053867      60.04     ADCS.Attitude_-_Omega_Y_deg_s 2019-01-05 00:04:00 -0.067067      60.0...                             ...                 ...       ...       ...1435             ADCS.RW3_MsmtValid 2019-01-05 23:55:00  1.000000      60.01436             ADCS.RW3_MsmtValid 2019-01-05 23:56:00  1.000000      60.01437             ADCS.RW3_MsmtValid 2019-01-05 23:57:00  1.000000      60.01438             ADCS.RW3_MsmtValid 2019-01-05 23:58:00  1.000000      60.01439             ADCS.RW3_MsmtValid 2019-01-05 23:59:00  1.000000      60.0
查看完整描述

3 回答

?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

Test data:


df1=pd.DataFrame({"ch_name":["ch1","ch1","ch2","ch3"],"time":pd.date_range("2019-10-12",freq="min",periods=4),"value":[1,2,3,4],"interval":[60,60,60,60]})                                                                                

df2=pd.DataFrame({"ch_name":["ch3","ch1","ch5","ch3"],"time":pd.date_range("2019-10-11",freq="min",periods=4),"value":[10,20,30,40],"interval":[70,70,70,70]})                                                                            

df1


  ch_name                time  value  interval

0     ch1 2019-10-12 00:00:00      1        60

1     ch1 2019-10-12 00:01:00      2        60

2     ch2 2019-10-12 00:02:00      3        60

3     ch3 2019-10-12 00:03:00      4        60


df2


  ch_name                time  value  interval

0     ch3 2019-10-11 00:00:00     10        70

1     ch1 2019-10-11 00:01:00     20        70

2     ch5 2019-10-11 00:02:00     30        70

3     ch3 2019-10-11 00:03:00     40        70


Create a set/array for the common column names:


#ss=set(df1.ch_name) & set(df2.ch_name)

ss= np.intersect1d(df1.ch_name,df2.ch_name)


Create the new data frames:


new_df1=df1[df1.ch_name.isin(ss)]


  ch_name                time  value  interval

0     ch1 2019-10-12 00:00:00      1        60

1     ch1 2019-10-12 00:01:00      2        60

3     ch3 2019-10-12 00:03:00      4        60


new_df3=df2[df2.ch_name.isin(ss)]


 ch_name                time  value  interval

0     ch3 2019-10-11 00:00:00     10        70

1     ch1 2019-10-11 00:01:00     20        70

3     ch3 2019-10-11 00:03:00     40        70


查看完整回答
反對 回復 2022-06-22
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

您可以使用設置邏輯執行此操作:


df = pd.DataFrame(columns = ['a1', 'ba1', 'b1', 'c1'])

df1 = pd.DataFrame(columns = ['a1', 'gg', 'b1', 'c2'])


df

   a1   ba1 b1  c1


df1

    a1  gg  b1  c2

要從 df 中刪除 df1 中的列:


df.drop(columns = set(df.columns) - set(df1.columns), inplace=True)

df

   a1   b1


查看完整回答
反對 回復 2022-06-22
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

你試過合并嗎?


我創建了一些虛假數據來向您展示它是如何工作的。


        data1 = [['ch1','12:55',512],['ch2','12:57',516], ['ch3','12:57',420],

    ['ch4','11:48',433],['ch5','10:42',467]]


        data2 = [['ch1','12:55',511],['ch2','12:54',519],['ch3','12:51',720],

    ['ch5','10:45',497]]


        import pandas as pd


        df1 = pd.DataFrame(data1,columns=('ch_name','time','value'))

        df2 = pd.DataFrame(data2,columns=('ch_name','time','value'))


        dfResult = pd.merge(df1, df2, on='ch_name', how='inner')


        print(dfResult)


          ch_name time_x  value_x   time_y  value_y

     0     ch1    12:55      512     12:55      511

     1     ch2    12:57      516     12:54      519

     2     ch3    12:57      420     12:51      720

     3     ch5    10:42      467     10:45      497

這里的關鍵是參數 how='inner' 和 on='ch_name'。how='inner' 是你說你想要出現在兩個數據框中的列的方式,而 on = column_name 是你定義要匹配的列的方式。


我希望它有所幫助。


查看完整回答
反對 回復 2022-06-22
  • 3 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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