相关疑难解决方法(0)

合并数据帧列表以创建一个数据帧

我有18个数据框的列表:

dfList = [df1, df2, df3, df4, df5, df6.....df18]
Run Code Online (Sandbox Code Playgroud)

所有数据框都有一个共同的id列,因此很容易将它们与pd.merge 2一起连接在一起.有没有办法一次性加入它们,以便dfList作为单个数据帧返回?

python python-3.x pandas

11
推荐指数
1
解决办法
9517
查看次数

在python中的common列上加入两个数据帧

我有一个数据帧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?

python join pandas

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

仅将一个键列复制到合并的DataFrame中

请考虑以下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)

有没有办法只保留一个关键列?

python merge pandas

11
推荐指数
3
解决办法
1434
查看次数

基于密钥的两个字典列表的交集

我有两个不同的词典列表,

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中缺少的值由" - "表示.

python dictionary list python-3.x

11
推荐指数
2
解决办法
470
查看次数

将numpy数组与一个共同维度"合并"

我有两个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)

python numpy dataframe pandas

10
推荐指数
2
解决办法
1334
查看次数

df.join() 问题:ValueError:您正在尝试合并对象和 int64 列

这些问题都没有解决问题:问题 1问题 2,我也无法在 pandas 文档中找到答案。

您好,我正在尝试查找此错误的根本原因:

ValueError: You are trying to merge on object and int64 columns.
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用 Pandasconcatmerge函数来解决这个问题,但我试图了解错误的原因。问题是:为什么我会得到这个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)

python join dataframe pandas

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

pandas两个数据帧交叉连接

我找不到任何关于交叉连接的内容,包括合并/加入或其他一些.我需要使用{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; ^^

python pandas

9
推荐指数
2
解决办法
3万
查看次数

通过公共列组合2个.csv文件

我有两个.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机器上执行此操作?

谢谢.

编辑:两个文件除了分隔字段之外没有逗号.

python csv shell debian join

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

如何在 Python 中合并字典中的所有数据框

我有一本字典,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不允许我按关键变量合并。

谁能教我如何更有效地做到这一点?

python dictionary dataframe pandas

8
推荐指数
1
解决办法
5394
查看次数

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

标签 统计

python ×10

pandas ×7

dataframe ×3

join ×3

dictionary ×2

numpy ×2

python-3.x ×2

arrays ×1

csv ×1

debian ×1

list ×1

merge ×1

shell ×1

vectorization ×1