gpt4 book ai didi

python - 使用具有公共(public)键的两个查询的结果来创建数据框,而无需使用合并

转载 作者:行者123 更新时间:2023-12-01 02:39:57 25 4
gpt4 key购买 nike

数据集:

df = pd.DataFrame(np.random.randn(5, 4), columns=['A', 'B', 'C', 'D'],index=['abcd','efgh','abcd','abc123','efgh']).reset_index()

s = pd.Series(data=[True,True,False],index=['abcd','efgh','abc123'], name='availability').reset_index()

(请随意删除上面的 Reset_index 位,它们只是为了轻松提供解决问题的不同方法。但是,我正在运行的查询生成的数据集最准确地类似于上面的数据集)

我有两个单独的查询,它们返回与上面类似的数据。一个查询从数据库中查询一个字段,该字段具有一列信息,而另一列中不存在。 “索引”列是两个表之间的公共(public)键。

我的结果集需要将第二个查询的结果系列注入(inject)到第一个查询的结果数据帧中的特定列索引处。

我知道我可以简单地运行:

df = df.merge(s, how='left', on='index')

然后强制列顺序:

df = df[['index', 'A', 'B', 'availability', 'C', 'D']

我看到你可以执行 df.inject,但这要求该系列与 df 的长度相同。

我想知道是否有一种方法可以做到这一点,而不必运行合并然后强制列顺序。对于我的实际数据集,列数明显更长。我认为最好的解决方案可能依赖于列表操作,但我宁愿首先对数据帧的创建方式进行一些巧妙的处理。

df.set_index(['index','id']).index.map(s['availability'])

正在返回:

TypeError: 'Series' object is not callable

S 是一个具有多索引和一列( bool 值)的数据框。

df 是一个数据框,其中的列构成了 S 的多索引

最佳答案

IIUC:

In [260]: df.insert(3, 'availability', 
df['index'].map(s.set_index('index')['availability']))

In [261]: df
Out[261]:
index A B availability C D
0 abcd 1.867270 0.517894 True 0.584115 -0.162361
1 efgh -0.036696 1.155110 True -1.112075 2.005678
2 abcd 0.693795 -0.843335 True -1.003202 1.001791
3 abc123 -1.466148 -0.848055 False -0.373293 0.360091
4 efgh -0.436618 -0.625454 True -0.285795 -0.220717

关于python - 使用具有公共(public)键的两个查询的结果来创建数据框,而无需使用合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45827721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com