Python 如何“连接/关联”2个数据帧,以便左数据帧的每一行都“连接”到右数据帧的每一行
我已经浏览了关于“合并、加入、连接”的熊猫文档,但一无所获Python 如何“连接/关联”2个数据帧,以便左数据帧的每一行都“连接”到右数据帧的每一行,python,pandas,Python,Pandas,我已经浏览了关于“合并、加入、连接”的熊猫文档,但一无所获 leftdf = pd.DataFrame({'m': ['K1']}) rightdf = pd.DataFrame({'k': ['K0', 'K1', 'K1', 'K2'], 'lv': [1, 2, 3, 4], 's': ['a', 'b', 'c', 'd']}) frames = [leftdf, rightdf] pd.concat(frames, s
leftdf = pd.DataFrame({'m': ['K1']})
rightdf = pd.DataFrame({'k': ['K0', 'K1', 'K1', 'K2'],
'lv': [1, 2, 3, 4],
's': ['a', 'b', 'c', 'd']})
frames = [leftdf, rightdf]
pd.concat(frames, sort=False, ignore_index=True)
结果是
m k lv s
0 K1 NaN NaN NaN
1 NaN K0 1.0 a
2 NaN K1 2.0 b
3 NaN K1 3.0 c
4 NaN K2 4.0 d
我所追求的是……的结果
m k lv s
0 K1 K0 1.0 a
1 K1 K1 2.0 b
2 K1 K1 3.0 c
3 K1 K2 4.0 d
所以请注意,另一个要求是不允许出现NAN。leftdf的行数始终比右侧少,因此当单个leftdf行“附加”到rightdf的每一行时,元素值将向前填充
此外,leftdf不能是一个系列,因为它将有多个列。为了简单起见,我在这里使用了1列df
没有通用的索引值或列名
原因是我正在提取相关的JSON片段,需要构建一个平面表。所有这些相关部分并不一定存在于每个JSON对象中。他们有时做,有时不做。我必须在某些片段存在时保存它们,并在遇到“其他”片段时以某种方式将它们“连接”到其他片段
我想知道是否必须将这些转换为numpy数组?这可以通过使用Ndarays修辞来实现。我将尽可能多地探索大熊猫。加入菲儿的行列
或concat,但轴=1
非常感谢@YO和Ben_W。在Merge、join和concatenate文档中,只提到过一次,但是在Merge_ordered中,ffill是一个参数,页面上到处都是nan,所以我想知道,使用它作为一种方法可以达到什么样的外推过程,甚至更接近它的存在。我在ffill文档中看到一个简短的注释对象,其中填充了缺少的值。叹气
rightdf.join(leftdf).ffill()
k lv s m
0 K0 1 a K1
1 K1 2 b K1
2 K1 3 c K1
3 K2 4 d K1
pd.concat(frames, axis = 1).ffill()
m k lv s
0 K1 K0 1 a
1 K1 K1 2 b
2 K1 K1 3 c
3 K1 K2 4 d