我需要创建一个空的数据框,存储另一个数据框的一列中的值,基于同一第二个数据框的两列中满足的某些条件.

我有一个数据框 test_mob_df = pd.DataFrame( {"geoid_o": [10002, 18039, 18039, 18182, 10006, 18111, 18005, 17001], "geoid_d": [10005, 18039, 18111, 18182, 18005, 17004, 18050, 15001], "pop_flows": [20,10,9,15,2,1,6,30]}) 和一个我感兴趣的ID列表作为state_county_fip = [18182, 18111, 18005, 18039, 18050, 18001]我现在需要创建一个新的$nxn $数据框(或一个数组),其行和列的名称按state_county_fips排序,只要geoid_ogeoid_d列的同一行中的值匹配与否,它就存储在$test_mob_df $的pop_flows列中的值.从本质上讲,生成的数据框应该如下所示:

18005 18039 18005 18050 18111 18182
18005 0 0 0 0 0 0
18039 0 10 0 0 9 0
18005 0 0 0 6 0 0
18050 0 0 0 0 0 0
18111 0 0 0 0 0 0
18182 0 0 0 0 0 15

也就是说,我需要创建一个从大地水准面_o到大地水准面_d的人口流的矩阵(或矩阵),当我们没有从大地水准面_o到大地水准面_d的人口流时,我们为相应的像元置零.例如,10个人从geoid_o 18005移动到geoid_d 18050.

除了使用Query创建一个具有感兴趣的大地水准面的数据框(来自test_mob_df)之外,我似乎不知道该如何做到这一点.我将非常感谢你能提供的任何帮助.

推荐答案

您可以:

test_mob_df = pd.DataFrame(
    {
        "geoid_o": [10002, 18039, 18039, 18182, 10006, 18111, 18005, 17001],
        "geoid_d": [10005, 18039, 18111, 18182, 18005, 17004, 18050, 15001],
        "pop_flows": [20, 10, 9, 15, 2, 1, 6, 30],
    }
)

state_county_fip = [18182, 18111, 18005, 18039, 18050, 18001]

out = pd.crosstab(
    test_mob_df.loc[test_mob_df["geoid_o"].isin(state_county_fip), "geoid_o"],
    test_mob_df.loc[test_mob_df["geoid_d"].isin(state_county_fip), "geoid_d"],
    values=test_mob_df["pop_flows"],
    aggfunc="first",
)

out = (
    out.reindex(index=state_county_fip, columns=state_county_fip)
    .fillna(0)
    .sort_index(axis=1)
    .sort_index()
    .astype(int)
)

print(out)

打印:

geoid_d  18001  18005  18039  18050  18111  18182
geoid_o                                          
18001        0      0      0      0      0      0
18005        0      0      0      6      0      0
18039        0      0     10      0      9      0
18050        0      0      0      0      0      0
18111        0      0      0      0      0      0
18182        0      0      0      0      0     15

Python相关问答推荐

如何将ctyles.POINTER(ctyles.c_float)转换为int?

在Pandas DataFrame操作中用链接替换'方法的更有效方法

什么相当于pytorch中的numpy累积ufunc

PMMLPipeline._ fit()需要2到3个位置参数,但给出了4个位置参数

Pandas—合并数据帧,在公共列上保留非空值,在另一列上保留平均值

从spaCy的句子中提取日期

部分视图的DataFrame

考虑到同一天和前2天的前2个数值,如何估算电力时间序列数据中的缺失值?

解决调用嵌入式函数的XSLT中表达式的语法移位/归约冲突

干燥化与列姆化的比较

Polars map_使用多处理对UDF进行批处理

如何从比较函数生成ngroup?

我什么时候应该使用帆布和标签?

Django在一个不是ForeignKey的字段上加入'

如何将一个文件的多列导入到Python中的同一数组中?

大型稀疏CSR二进制矩阵乘法结果中的错误

如何在表单中添加管理员风格的输入(PDF)

在不中断格式的情况下在文件的特定部分插入XML标签

有没有一种方法可以根据不同索引集的数组从2D数组的对称子矩阵高效地构造3D数组?

将鼠标悬停在海运`pairplot`的批注/高亮显示上