相关疑难解决方法(0)

Python合并基于条件的两个Numpy数组

如何通过查找数组B中数组A的值来合并以下两个数组?

数组A:

array([['GG', 'AB', IPv4Network('1.2.3.41/26')],
       ['GG', 'AC', IPv4Network('1.2.3.42/25')],
       ['GG', 'AD', IPv4Network('1.2.3.43/24')],
       ['GG', 'AE', IPv4Network('1.2.3.47/23')],
       ['GG', 'AF', IPv4Network('1.2.3.5/24')]],
      dtype=object)
Run Code Online (Sandbox Code Playgroud)

和数组B:

array([['123456', 'A1', IPv4Address('1.2.3.5'), nan],
       ['987654', 'B1', IPv4Address('1.2.3.47'), nan]],
      dtype=object)  
Run Code Online (Sandbox Code Playgroud)

这里的目标是创建Array C,通过从Array A中的Array B查找IPv4Address并比较它们,并获取相应数组的第二个值并存储它:

数组C:

array([['123456', 'A1', IPv4Address('1.2.3.5'), nan, 'AF'],
       ['987654', 'B1', IPv4Address('1.2.3.47'), nan, 'AE']],
      dtype=object) 
Run Code Online (Sandbox Code Playgroud)

ip地址属于这种类型:https://docs.python.org/3/library/ipaddress.html#ipaddress.ip_network

我怎样才能做到这一点?

编辑:

请注意,合并取决于IP匹配,因此生成的数组C将具有与数组B相同数量的数组,但它将具有一个更多值.建议的重复链接没有回答相同的问题.

python arrays numpy vectorization

7
推荐指数
1
解决办法
1045
查看次数

合并列上的DataFrame列表?

我在将DataFrame数组合并到单个DataFrame中时遇到了问题,并在特定列上合并.

我有一个DataFrames列表data,每个元素都被调用,data[i]如下所示:

     Rank  Name
2400    1 name1
2401    2 name2
2402    3 name3
2403    4 name4
2404    5 name5
Run Code Online (Sandbox Code Playgroud)

每个DataFrame包含给定月份的前5个列表,该列表包含一年的月度结果.

我希望最终的合并DataFrame看起来像这样:

     Rank  Name_month1 Name_month2 Name_month3 ...
2400    1        name1       name1       name1 ...
2401    2        name2       name2       name2 ...
2402    3        name3       name3       name3 ...
2403    4        name4       name4       name4 ...
2404    5        name5       name5       name5 ...
Run Code Online (Sandbox Code Playgroud)

其中每一列在第一列之后对应于每月排名.

我从列表中合并2个DataFrame没有问题,data:

pandas.merge(data[0], data[1], on='Rank', suffix=['_month1', '_month2'])
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用filter()或链接时.merge,我一直遇到麻烦.

有什么想法吗?谢谢!

python merge filter dataframe pandas

6
推荐指数
1
解决办法
4729
查看次数

python pandas数据框连接两个数据框

我正在尝试加入数据框。他们看起来像这样

DF1 = ID     COUNTRY     YEAR     V1     V2     V3    V4
      12     USA         2012     x      y      z      a
      13     USA         2013     x      y      z      a
      14     RUSSIA      2012     x      y      z      a

DF2 = ID     COUNTRY     YEAR     TRACT
      9      USA         2000       A
      13     USA         2013       B
Run Code Online (Sandbox Code Playgroud)

期望的最终目标是:

DF3 = ID     COUNTRY     YEAR     V1     V2     V3    V4    TRACT    
      9      USA         2000                                 A
      12     USA         2012     x      y      z      a
      13     USA         2013     x      y      z      a      B
      14     RUSSIA      2012     x      y …
Run Code Online (Sandbox Code Playgroud)

python merge join pandas

5
推荐指数
1
解决办法
2万
查看次数

Pandas加入/合并/连接两个DataFrame并组合相同键/索引的行

我正在尝试组合两组数据,但是我无法确定哪种方法最合适(连接,合并,连接等)这个应用程序,并且文档没有任何示例可以做我需要的去做.

我有两组数据,结构如下:

>>> A
Time     Voltage
1.0      5.1
2.0      5.5
3.0      5.3
4.0      5.4
5.0      5.0

>>> B
Time     Current
-1.0     0.5
0.0      0.6
1.0      0.3
2.0      0.4
3.0      0.7
Run Code Online (Sandbox Code Playgroud)

我想组合数据列并将"时间"列合并在一起,以便获得以下内容:

>>> AB
Time     Voltage     Current
-1.0                 0.5
0.0                  0.6
1.0      5.1         0.3
2.0      5.5         0.4
3.0      5.3         0.7
4.0      5.4            
5.0      5.0            
Run Code Online (Sandbox Code Playgroud)

我已经尝试过AB = merge_ordered(A, B, on='Time', how='outer'),虽然它成功地组合了数据,但它输出类似于:

>>> AB
Time     Voltage     Current
-1.0                 0.5
0.0                  0.6
1.0      5.1            
1.0                  0.3
2.0      5.5            
2.0                  0.4 …
Run Code Online (Sandbox Code Playgroud)

python merge join dataframe pandas

5
推荐指数
1
解决办法
3743
查看次数

使用来自两个不同列的匹配值合并DataFrames - Pandas

我有两个不同的DataFrame我要合并datehours列.我看到了一些线程,但我无法找到解决问题的方法.我也阅读了这份文件,尝试了不同的组合,然而,效果并不好.

我的两个不同DataFrame的示例,

DF1

        date    hours        var1            var2 
0   2013-07-10  00:00:00    150.322617  52.225920   
1   2013-07-10  01:00:00    155.250917  53.365296   
2   2013-07-10  02:00:00    124.918667  51.158249   
3   2013-07-10  03:00:00    143.839217  53.138251
 .....  
9   2013-09-10  09:00:00    148.135818  86.676341
10  2013-09-10  10:00:00    147.833517  53.658016   
11  2013-09-10  12:00:00    149.580233  69.745368   
12  2013-09-10  13:00:00    163.715317  14.524894   
13  2013-09-10  14:00:00    168.856650  10.762779   
Run Code Online (Sandbox Code Playgroud)

DF2

       date      hours      myvar1        myvar2 
0   2013-07-10  09:00:00    1.617         98.56 
1   2013-07-10  10:00:00    2.917         23.60 
2   2013-07-10  12:00:00    19.667 …
Run Code Online (Sandbox Code Playgroud)

python merge dataframe pandas

5
推荐指数
1
解决办法
1万
查看次数

在Python中合并具有非唯一值的列上的两个数据框

我正在尝试基于“X”列合并 Python 中的两个数据框。

左侧数据框中的 X 列具有非唯一值,右侧数据框中的 X 列具有唯一值。如何将右侧数据框中的值合并到左侧数据框中?

我想将 df2 中的行合并到 df1 中以形成 df3

df1 = pd.DataFrame({'A': ['NA','EU','LA','ME'],
                    'B': [50, 23,21,100],
                    'X': ['IW233', 'IW455', 'IW455', 'IW100']})

df2 = pd.DataFrame({'C': [50, 12, 12, 11, 10, 16],
                    'X': ['IW455', 'IW200', 'IW233', 'IW150', 'IW175', 'IW100'],
                    'D': ['Aug', 'Sep', 'Jan', 'Feb', 'Dec', 'Nov']})
Run Code Online (Sandbox Code Playgroud)

df3:1

python merge dataframe pandas

5
推荐指数
1
解决办法
1万
查看次数

如何在pandas中进行左外连接排除

我有两个数据帧,A和B,我希望得到A中但不是B中的数据帧,就像左下角的那个.

左上角的那个

Dataframe A有列['a','b' + others],B有列['a','b' + others].没有NaN值.我尝试了以下方法:

1.

dfm = dfA.merge(dfB, on=['a','b'])
dfe = dfA[(~dfA['a'].isin(dfm['a']) | (~dfA['b'].isin(dfm['b'])
Run Code Online (Sandbox Code Playgroud)

2.

dfm = dfA.merge(dfB, on=['a','b'])
dfe = dfA[(~dfA['a'].isin(dfm['a']) & (~dfA['b'].isin(dfm['b'])
Run Code Online (Sandbox Code Playgroud)

3.

dfe = dfA[(~dfA['a'].isin(dfB['a']) | (~dfA['b'].isin(dfB['b'])
Run Code Online (Sandbox Code Playgroud)

4.

dfe = dfA[(~dfA['a'].isin(dfB['a']) & (~dfA['b'].isin(dfB['b'])
Run Code Online (Sandbox Code Playgroud)

但是当我len(dfm)len(dfe)他们不总结到dfA(它由几个数字是关闭).我试过在虚拟案例和#1工作中这样做,所以也许我的数据集可能有一些我无法重现的特性.

这样做的正确方法是什么?

python pandas

5
推荐指数
2
解决办法
2264
查看次数

根据同一列合并多个数据框

我有三个数据框。它们都有一个公共列,我需要根据公共列合并它们,而不会丢失任何数据

输入项

>>> df1
0 Col1 Col2 Col3
1个数据1 3 4
2个数据2 4 3
3个数据3 2 3
4个数据4 2 4
5个数据5 1 4

>>> df2
0 Col1 Col4 Col5
1个数据1 7 4
2个数据2 6 9
3个数据3 1 4

>>> df3
0 Col1 Col6 Col7
1个数据2 5 8
2个数据3 2 7
3个数据5 5 3

预期产量

>>> df
0 Col1 Col2 Col3 Col4 Col5 Col6 Col7
1个数据1 3 4 7 4
2个数据2 4 3 6 9 5 8
3个数据3 2 3 1 …

python merge concat dataframe pandas

5
推荐指数
3
解决办法
5131
查看次数

熊猫:根据另一个数据框分配值

我必须使用如下所示的数据框:

 df1:          condition        
               A               
               A              
               A               
               B              
               B             
               B           
               B   

 df2:          condition      value   
               A               1
               B               2
Run Code Online (Sandbox Code Playgroud)

我想为每个条件分配其值,向 df1 添加一列以获得:

 df1:          condition     value      
               A               1
               A               1
               A               1
               B               2
               B               2
               B               2
               B               2
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?先感谢您!

python pandas

5
推荐指数
1
解决办法
5650
查看次数

Pandas 合并并仅保留不匹配的记录

如何仅在“id”上合并/连接这两个数据框。生成 3 个新数据框:

  • 1)R1 = 合并记录
  • 2)R2 = (DF1 - 合并记录)
  • 3)R3 = (DF2 - 合并记录)

在 Python 中使用pandas

第一个数据帧 (DF1)

|        id | name  |
|-----------|-------|
| 1         | Mark  |
| 2         | Dart  |
| 3         | Julia |
| 4         | Oolia |
| 5         | Talia |
Run Code Online (Sandbox Code Playgroud)

第二个数据帧 (DF2)

|        id | salary |
|-----------|--------|
| 1         | 20     |
| 2         | 30     |
| 3         | 40     |
| 4         | …
Run Code Online (Sandbox Code Playgroud)

python merge dataframe pandas

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

python ×10

pandas ×9

merge ×7

dataframe ×6

join ×2

arrays ×1

concat ×1

filter ×1

numpy ×1

vectorization ×1