相关疑难解决方法(0)

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
查看次数

在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将多个数据帧合并为一个

我有一个数据帧df:

   fruit      date    volume
0  apple    20141001    2000
1  apple    20141101    1800
2  apple    20141201    2200
3  orange   20141001    1900
4  orange   20141101    2000
5  orange   20141201    3000
….
Run Code Online (Sandbox Code Playgroud)

我有两个数据帧

苹果:

   date       price
0  20141001   2
1  20141101   2.5
2  20141201   3
Run Code Online (Sandbox Code Playgroud)

橙子:

   date       price
0  20141001   1.5
1  20141101   2
2  20141201   2
Run Code Online (Sandbox Code Playgroud)

如何将所有这些合并到以下数据框中:

   fruit      date    price    volume
0  apple    20141001   2       2000
1  apple    20141101   2.5     1800
2  apple    20141201   3       2200
3  orange   20141001   1.5     1900
4 …
Run Code Online (Sandbox Code Playgroud)

python merge dataframe pandas

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

如何在python pandas中实现左外连接?

我一直在尝试在python中实现左外连接。我看到左连接和左外连接之间存在细微差别。

如此链接所示:SQL Server 中的 LEFT JOIN 与 LEFT OUTER JOIN

我可以通过以下示例来了解以下内容:

import pandas as pd
import numpy as np

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
'value1': np.random.randn(4)})

df2 = pd.DataFrame({'key': ['B', 'D', 'D', 'E'],
 'value2': np.random.randn(4)})

df3 = df1.merge(df2, on=['key'], how='left')
Run Code Online (Sandbox Code Playgroud)

这总共给出了来自 df1 的记录(包括相交的记录)

但是我如何做只有来自 df1 而不在 df2 中的记录的左外连接?

不是:这只是示例。我可能在任一数据框中都有大量列(不同)。

请帮忙。

python pandas

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

在不同的列名称上合并两个不同的数据框

我有两个数据框

df1 = pd.DataFrame({'A': ['A1', 'A1', 'A2', 'A3'],
                     'B': ['121', '345', '123', '146'],
                     'C': ['K0', 'K1', 'K0', 'K1']})

df2 = pd.DataFrame({'A': ['A1', 'A3'],
                      'BB': ['B0', 'B3'],
                      'CC': ['121', '345'],
                      'DD': ['D0', 'D1']})
Run Code Online (Sandbox Code Playgroud)

现在我需要从df1的A列和B列以及从df2的A列和CC列获得相似的行。因此,我尝试了可能的合并选项,例如:

both_DFS=pd.merge(df1,df2, how='left',left_on=['A','B'],right_on=['A','CC'])
Run Code Online (Sandbox Code Playgroud)

这不会给我来自df2数据帧的行信息,这是我所需要的。意思是,我拥有df2中的所有列名,但行只是空或Nan。

然后我尝试:

Both_DFs=pd.merge(df1,df2, how='left',left_on=['A','B'],right_on=['A','CC'])[['A','B','CC']]
Run Code Online (Sandbox Code Playgroud)

这给了我错误,

KeyError: "['B'] not in index"
Run Code Online (Sandbox Code Playgroud)

我的目标是将df1和df2中的所有列都合并到Dataframe中。任何建议都很好

所需的输出:

 Both_DFs
    A   B   C   BB  CC  DD
0   A1  121 K0  B0  121 D0
Run Code Online (Sandbox Code Playgroud)

因此,在我的数据帧(df1和df2)中,只有一行与目标两列都完全匹配。也就是说,df1中的A和B列只有一行与df2中A和CC列中的行完全匹配

python merge numpy pandas

4
推荐指数
1
解决办法
8231
查看次数

Pandas合并在索引列上?

In [88]: c
Out[88]: 
                       Address    Name
CustomerID                            
10            Address for Mike    Mike
11          Address for Marcia  Marcia

In [89]: c.index
Out[89]: Int64Index([10, 11], dtype='int64', name='CustomerID')

In [90]: orders
Out[90]: 
   CustomerID   OrderDate
0          10  2014-12-01
1          11  2014-12-01
2          10  2014-12-01

In [91]: orders.index
Out[91]: RangeIndex(start=0, stop=3, step=1)

In [92]: c.merge(orders)
---------------------------
MergeError: No common columns to perform merge on
Run Code Online (Sandbox Code Playgroud)

如果一个数据帧中的索引列与第二个数据帧中的另一列具有相同的名称,那么panda无法合并?

python pandas

4
推荐指数
1
解决办法
8354
查看次数

熊猫在循环中合并数据帧

我创建了一个循环来将 sqlite 数据库读入 Pandas 数据帧,并且我试图将它们合并在一起 "Code"

...
df = pandas.Dataframe()  # Creating an empty dataframe for merging at the end

items = ["tb1", "tb2", "tb3"]

for each_item in items:
    my_value = pandas.read_sql_query('select "Code", "Name", "Value" from {tb_name} where "Value" is not null'
                                     .format(tbl_name='"%s"' % each_item), con=engine)

    print(my_value)

    # This below code is my attempt to merge the dataframes that was obtained through the for loop
    merge_value = pandas.merge(my_value, df, on='Code', how='outer')
Run Code Online (Sandbox Code Playgroud)

my_value 结果:

# tb1 results
     Code          Name      Value
0 …
Run Code Online (Sandbox Code Playgroud)

python merge pandas

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

删除一列中的值等于另一列中的值的行

我正在努力弄清楚如何从pandas数据框中删除行,其中两个指定的列在一行中具有相同的值.

例如,在下面的示例中,我想删除第2列和第4列中具有重复值的行.

例如:

Column1 Column2 Column3 Column4
  Pat     123     John    456
  Pat     123     John    345 
  Jimmy   678     Mary    678 
  Larry   678     James   983
Run Code Online (Sandbox Code Playgroud)

会变成:

Column1 Column2 Column3 Column4
  Pat     123     John    456 
  Pat     123     John    345
  Larry   678     James   983
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏,谢谢!

python pandas

4
推荐指数
1
解决办法
398
查看次数

如何从两个或多个数据帧绘制分组条形图

我有多个数据框,我想将它们绘制在分组条形图视图中的同一个图形上。

这是两个非常小的数据框,我想将它们绘制在同一张图中。

数据框是:

我的数据框

我想绘制一个像这样的例子的图:

我想要的例子

我尝试这样做,只绘制一张图:

fig, ax = plt.subplots()

df1.plot.bar(x='Zona',y='Total_MSP')
df4.plot.bar(x='Zona',y='NumEstCasasFavelas2017',ax=ax)

plt.show()
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个:

fig, ax = plt.subplots()

df1.plot.bar(x='Zona',y='Total_MSP',ax=ax)
df4.plot.bar(x='Zona',y='NumEstCasasFavelas2017',ax=ax)

plt.show()
Run Code Online (Sandbox Code Playgroud)

结果只是图片中单个数据帧的数据,而不是两个数据帧的两个数据。请注意,只有两个数据帧的标题出现在同一张图片中,数据仅来自单个独立的数据帧。

我的失败

python matplotlib bar-chart pandas grouped-bar-chart

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

熊猫:合并两列名称不同的列?

我正在尝试连接上下两个数据框。不并排连接。

数据帧包含相同的数据,但是,在第一个数据帧中,一列可能具有名称“ObjectType”,而在第二个数据帧中,该列可能具有名称“ObjectClass”。当我做

df_total = pandas.concat ([df0, df1])
Run Code Online (Sandbox Code Playgroud)

df_total 将有两个列名,一个是“ObjectType”,另一个是“ObjectClass”。在这两列中的每一列中,一半的值将是“NaN”。所以我必须手动将这两列合并为一列,这很痛苦。

我可以以某种方式将两列合并为一列吗?我想要一个功能,它可以执行以下操作:

df_total = pandas.merge_many_columns(input=["ObjectType,"ObjectClass"], output=["MyObjectClasses"]
Run Code Online (Sandbox Code Playgroud)

合并两列并创建一个新列。我已经研究过melt() 但它并没有真正做到这一点?

(如果我能指定发生碰撞时会发生什么,比如两列包含值,那么我提供一个 lambda 函数,表示“保留最大值”、“使用平均值”等,这可能会很好)

python merge concatenation dataframe pandas

3
推荐指数
1
解决办法
4802
查看次数