根据另一列唯一值填充另一列

Posted

技术标签:

【中文标题】根据另一列唯一值填充另一列【英文标题】:Fill up another column based on another columns unique value 【发布时间】:2021-03-16 07:38:05 【问题描述】:

我有这个 csv 数据(一个例子):

我有 5000 个邮政编码以及其他列,但其中 34 个(邮政编码)是唯一的。我必须获取每个邮政编码并点击另一个 API 才能获得收入中位数,但是如何用重复的邮政编码填写另一行的收入中位数列?

注意:没有找到与我的案子有关的任何东西。

【问题讨论】:

对不起,我真的不明白你想要做什么,你能改一下吗?是否要复制 ZIP 列?您想获取唯一值吗? 这个其他 API 的输出是什么?字典? @OliverHnat 假设我得到 34 个唯一邮政编码的收入中位数,但我想用我得到的值填写重复邮政编码的收入中位数。 @CainãMaxCouto-Silva 其实没问题。 【参考方案1】:

您希望我们 transform,它返回一个 DataFrame,其索引与填充转换值的原始对象相同。

您需要编写一个函数,该函数采用邮政编码并返回中间值。看这个例子:

import pandas as pd

def get_med(zip_code):
    # This would be your get call to the API
    # Here, `zip_code` is a Series, use `.iloc[0]` 
    # to get the value of the group 
    return zip_code.iloc[0] * 100

df = pd.DataFrame("zip":[1, 2, 3, 1, 1])
df["med_income"] = df.groupby("zip")["zip"].transform(get_med)
#    zip  med_income
# 0    1         100
# 1    2         200
# 2    3         300
# 3    1         100
# 4    1         100

或者,您可以在 dict 中生成所有中间值,然后将 map 返回到 DataFrame:

medians = get_median(zip_code) for zip_code in df["zip"].unique()
df["med_income"] = df["zip"].map(medians)

【讨论】:

【参考方案2】:

我相信您正在寻找熊猫map。所以让我们假设第二个 API 的输出是一个字典(也许你可以设法得到它):

# Get unique zip codes to use as input to the API
zip_codes = df['Zip'].unique()

# Let's suppose you get an ouput like this
zip_dict = 46234: 1500, 46250: 2000, 46280: 1200 # and so on...

因此,您可以像这样将邮政编码映射到收入中位数:

df['Median Income'] = df['Zip'].map(zip_dict)

df 是您的数据框。

【讨论】:

另外,另一种选择是将输出(作为包含“Zip”和“中值收入”列的数据框)与df 合并。不过,使用map 更简单。【参考方案3】:

据我了解,您想获取邮政编码的唯一值吗?如果是,那么您可以使用

df.yourColumn.unique()

【讨论】:

以上是关于根据另一列唯一值填充另一列的主要内容,如果未能解决你的问题,请参考以下文章

根据另一列的先前值填充一列

Pyspark:如何根据另一列的值填充空值

根据另一列中的值填充多列中的单元格

根据另一列自动填充 excel 中的字段

根据 SQL 中的另一列填充列

使用另一列中的值填充空白 Excel 单元格?