我正在尝试组合两组数据,但是我无法确定哪种方法最合适(连接,合并,连接等)这个应用程序,并且文档没有任何示例可以做我需要的去做.
我有两组数据,结构如下:
>>> 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) 我正在尝试基于“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
我有一个数据帧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中实现左外连接。我看到左连接和左外连接之间存在细微差别。
如此链接所示: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 中的记录的左外连接?
不是:这只是示例。我可能在任一数据框中都有大量列(不同)。
请帮忙。
我有两个数据框
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列中的行完全匹配
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无法合并?
我创建了一个循环来将 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) 我正在努力弄清楚如何从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)
任何帮助表示赞赏,谢谢!
我有多个数据框,我想将它们绘制在分组条形图视图中的同一个图形上。
这是两个非常小的数据框,我想将它们绘制在同一张图中。
数据框是:

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

我尝试这样做,只绘制一张图:
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)
结果只是图片中单个数据帧的数据,而不是两个数据帧的两个数据。请注意,只有两个数据帧的标题出现在同一张图片中,数据仅来自单个独立的数据帧。

我正在尝试连接上下两个数据框。不并排连接。
数据帧包含相同的数据,但是,在第一个数据帧中,一列可能具有名称“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 函数,表示“保留最大值”、“使用平均值”等,这可能会很好)