我有两个数据帧,数据帧中的每一行A
都有一个索引列表,这些索引对应于数据帧中的条目B
以及一组其他值。我想以某种方式加入两个数据帧,以使in中的每个条目都B
具有其他值,A
其中in 的索引位于in 中的索引B
列表中A
。
到目前为止,我已经找到了一种提取该行中B
每一行的索引列表的行的方法,A
但是只能从该答案逐行进行,但是然后我不确定从何处去?另外,由于索引列表的大小会发生变化,因此不确定是否有更好的方法可以动态地对Pandas进行操作。
import pandas as pd
import numpy as np
# Inputs
A = pd.DataFrame.from_dict({
"indices": [[0,1],[2,3],[4,5]],
"a1": ["a","b","c"],
"a2": [100,200,300]
})
print(A)
>> indices a1 a2
>> 0 [0, 1] a 100
>> 1 [2, 3] b 200
>> 2 [4, 5] c 300
B = pd.DataFrame.from_dict({
"b": [10,20,30,40,50,60]
})
print(B)
>> b
>> 0 10
>> 1 20 …
Run Code Online (Sandbox Code Playgroud) 假设我有一个充满 URL 的列,如下所示:
+------------------------------------------+
|url |
+------------------------------------------+
|https://www.example1.com?param1=1¶m2=a|
|https://www.example2.com?param1=2¶m2=b|
|https://www.example3.com?param1=3¶m2=c|
+------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
从该列中提取 URL 参数并将它们作为列添加到数据框中以生成以下内容的最佳方法是什么?
+-------------------------------------------+---------------+
| url| param1| param2|
+-------------------------------------------+---------------+
|https://www.example1.com?param1=1¶m2=a | 1| a|
|https://www.example2.com?param1=2¶m2=b | 2| b|
|https://www.example3.com?param1=3¶m2=c | 3| c|
|etc... | etc...| etc...|
+-------------------------------------------+---------------+
Run Code Online (Sandbox Code Playgroud)
我可以想到两种可能的方法来做到这一点,使用functions.regexp_extract
pyspark 库或使用标准库中的urllib.parse.parse_qs
and 。urllib.parse.urlparse
前一种解决方案使用正则表达式,这是一种从字符串中提取参数的挑剔方法,但后者需要包装在 UDF 中才能使用。
+------------------------------------------+
|url |
+------------------------------------------+
|https://www.example1.com?param1=1¶m2=a|
|https://www.example2.com?param1=2¶m2=b|
|https://www.example3.com?param1=3¶m2=c|
+------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
正则表达式解决方案:
+-------------------------------------------+---------------+
| url| param1| param2|
+-------------------------------------------+---------------+
|https://www.example1.com?param1=1¶m2=a | 1| a|
|https://www.example2.com?param1=2¶m2=b | 2| b|
|https://www.example3.com?param1=3¶m2=c | 3| c|
|etc... | etc...| etc...| …
Run Code Online (Sandbox Code Playgroud)