我有18个数据框的列表:
dfList = [df1, df2, df3, df4, df5, df6.....df18]
Run Code Online (Sandbox Code Playgroud)
所有数据框都有一个共同的id列,因此很容易将它们与pd.merge 2一起连接在一起.有没有办法一次性加入它们,以便dfList作为单个数据帧返回?
我有一个数据帧df:
id name count
1 a 10
2 b 20
3 c 30
4 d 40
5 e 50
Run Code Online (Sandbox Code Playgroud)
这里我有另一个数据帧df2:
id1 price rating
1 100 1.0
2 200 2.0
3 300 3.0
5 500 5.0
Run Code Online (Sandbox Code Playgroud)
我想在列id和id1上加入这两个数据帧(两者都是相同的).这是df3的一个例子:
id name count price rating
1 a 10 100 1.0
2 b 20 200 2.0
3 c 30 300 3.0
4 d 40 Nan Nan
5 e 50 500 5.0
Run Code Online (Sandbox Code Playgroud)
我应该使用df.merge还是pd.concat?
请考虑以下DataFrame:
df1 = pd.DataFrame({'a': [0, 1, 2, 3], 'b': list('abcd')})
df2 = pd.DataFrame({'c': list('abcd'), 'd': 'Alex'})
Run Code Online (Sandbox Code Playgroud)
在这个例子中,df1['b']并且df2['c']是关键列.合并时:
df1.merge(df2, left_on='b', right_on='c')
a b c d
0 0 a a Alex
1 1 b b Alex
2 2 c c Alex
3 3 d d Alex
Run Code Online (Sandbox Code Playgroud)
当我只需要一个时,我最终得到了结果DataFrame中的两个键列.我一直在用:
df1.merge(df2, left_on='b', right_on='c').drop('c', axis='columns')
Run Code Online (Sandbox Code Playgroud)
有没有办法只保留一个关键列?
我有两个不同的词典列表,
list1 = [{'count': 351, 'att_value': 'one'},
{'count': 332, 'att_value': 'two'},
{'count': 336, 'att_value': 'six'},
{'count': 359, 'att_value': 'nine'},
{'count': 304, 'att_value': 'four'}]
list2 = [{'count': 359,'person_id' : 4},
{'count': 351, 'person_id' : 12},
{'count': 381, 'person_id' : 8}]
Run Code Online (Sandbox Code Playgroud)
如何通过将其余的键包含在list_C中来基于"count"键找到list_A和list_B的交集?
list3 = [{'count':359, 'att_value' : 'nine', 'person_id':4},
{'count':351, 'att_value' : 'one', 'person_id':12},
{'count':381, 'att_value' : '-', 'person_id':8}]
Run Code Online (Sandbox Code Playgroud)
我想保留list2中的键,但是list1中缺少的值由" - "表示.
我有两个matricies,对应数据点(x,y1)和(x,y2):
x | y1
------------
0 | 0
1 | 1
2 | 2
3 | 3
4 | 4
5 | 5
x | y2
----------------
0.5 | 0.5
1.5 | 1.5
2.5 | 2.5
3.5 | 3.5
4.5 | 4.5
5.5 | 5.5
Run Code Online (Sandbox Code Playgroud)
我想创建,结合了一个新的矩阵x值成一列,并具有NaNS IN合适y1,y2列:
x | y1 | y2
-----------------------------
0 | 0 | NaN
0.5 | NaN | 0.5
1 | 0 | NaN …Run Code Online (Sandbox Code Playgroud) 您好,我正在尝试查找此错误的根本原因:
ValueError: You are trying to merge on object and int64 columns.
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用 Pandasconcat或merge函数来解决这个问题,但我试图了解错误的原因。问题是:为什么我会得到这个ValueError?
这是使用的两个数据帧上的head(5)和的输出info()。
print(the_big_df.head(5)) 输出:
account apt apt_p balance date day flag month reps reqid year
0 AA0420 0 0.0 -578.30 2019-03-01 1 1 3 10 82f2d761 2019
1 AA0420 0 0.1 -578.30 2019-03-02 2 1 3 10 82f2d761 2019
2 AA0420 0 0.1 -578.30 2019-03-03 3 1 3 …Run Code Online (Sandbox Code Playgroud) 我找不到任何关于交叉连接的内容,包括合并/加入或其他一些.我需要使用{my function}作为myfunc来处理两个数据帧.相当于:
{
for itemA in df1.iterrows():
for itemB in df2.iterrows():
t["A"] = myfunc(itemA[1]["A"],itemB[1]["A"])
}
Run Code Online (Sandbox Code Playgroud)
相当于:
{
select myfunc(df1.A,df2.A),df1.A,df2.A from df1,df2;
}
Run Code Online (Sandbox Code Playgroud)
但我需要更有效的解决方案:如果使用apply我将是如何实现它们thx; ^^
我有两个.csv文件,其中文件1中的第一行是:
MPID,Title,Description,Model,Category ID,Category Description,Subcategory ID,Subcategory Description,Manufacturer ID,Manufacturer Description,URL,Manufacturer (Brand) URL,Image URL,AR Price,Price,Ship Price,Stock,Condition
Run Code Online (Sandbox Code Playgroud)
文件2的第一行:
Regular Price,Sale Price,Manufacturer Name,Model Number,Retailer Category,Buy URL,Product Name,Availability,Shipping Cost,Condition,MPID,Image URL,UPC,Description
Run Code Online (Sandbox Code Playgroud)
然后每个文件的其余部分都填充了信息.
如您所见,两个文件都有一个名为MPID的公共字段(文件1:col 1,文件2:col 9,其中第一个col为col 1).
我想创建一个新文件,通过查看这个列来组合这两个文件(如:如果两个文件中都有一个MPID,那么在新文件中,这个MPID将出现在文件1的两行中)和它在文件2中的行.如果一个MPID只出现在一个文件中,那么它也应该进入这个组合文件.
文件未以任何方式排序.
如何在带有shell脚本或python的debian机器上执行此操作?
谢谢.
编辑:两个文件除了分隔字段之外没有逗号.
我有一本字典,dict其中包含许多(超过 100 个)数据框。每个数据帧包含两个变量name和“value_i”。例如,此字典中的第一个数据框dict[1]如下所示:
name value_1
A 1
B 1.1
C 2
Run Code Online (Sandbox Code Playgroud)
同样,此字典中的第二个数据框dict2如下所示:
name value_2
A 1
B 1.1
D 1.3
Run Code Online (Sandbox Code Playgroud)
我想通过公共变量合并此字典中的所有数据帧name。
预期结果应如下所示:
name value_1 value_2
A 1 1
B 1.1 1.1
C 2 nan
D nan 1.3
Run Code Online (Sandbox Code Playgroud)
我知道我可以pd.merge[dict[i], dict[i-1], how = 'outer', on = 'name'多次将所有数据帧合并在一起。但这太低效了。
我试过pd.concat(dict.values(), axis = 1, join='outer'但concat不允许我按关键变量合并。
谁能教我如何更有效地做到这一点?
如何通过查找数组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相同数量的数组,但它将具有一个更多值.建议的重复链接没有回答相同的问题.