python - 对填充列表的 DataFrame 的每一列应用一个函数

标签 python pandas

得到一个 DataFrame,填充了不同的类型:字符串、整数、列表 我现在尝试将每一列的每个元素(包含一个不超过一个元素的列表)转换为字符串。我非常清楚与 lambda 函数相关的方法 apply,但我似乎没有完全掌握它...数据已使用 json.load(XXX) 从 json 文件导入,并使用 json.load(XXX) 分成不同的 DataFrames json_normalize。

DataFrame "infos":
name     town     link                             number
Bob      NY       ["https://www.bobsite.com"]      00184747328859
Alice    MI       ["https://www.alicesite.com"]    00198309458093

Python 代码:

infos = infos.apply(lambda x: x[0])

# or if just accessing one column
infos = infos.link.apply(lambda x: x[0])

总的来说,这似乎不是处理这个问题的正确方法。

期望这是新的 DataFrame:

DataFrame "infos":
name     town     link                          number
Bob      NY       https://www.bobsite.com       00184747328859
Alice    MI       https://www.alicesite.com     00198309458093

最佳答案

看起来您需要带有自定义功能的df.applymap

例如:

df = pd.DataFrame({'name':["Bob", "Alice"],
                   'town': ["NY", "MI"],
                   'link': [["https://www.bobsite.com"], ["https://www.alicesite.com"]],
                   'number': ["00184747328859", "00198309458093"]})


def cust_func(row):
    if isinstance(row, list):   #Check if object is list
        if len(row) == 1:       #Check if list size == 1
            return row[0]
    return row 


df = df.applymap(cust_func) 
print(df)

输出:

                        link   name          number town
0    https://www.bobsite.com    Bob  00184747328859   NY
1  https://www.alicesite.com  Alice  00198309458093   MI
<小时/>

如果只有一列并且列表中只有一个值,请使用 .str[0]

df = pd.DataFrame({'name':["Bob", "Alice"],
                   'town': ["NY", "MI"],
                   'link': [["https://www.bobsite.com"], ["https://www.alicesite.com"]],
                   'number': ["00184747328859", "00198309458093"]})


df["link"] = df["link"].str[0]
print(df)

关于python - 对填充列表的 DataFrame 的每一列应用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57252180/

相关文章:

python - 为什么我在 "Unknown column ' 中得到 'where clause' Jacob'?

python - pandas.dataframe.query() 中的模式搜索

python - numpy 多维数组的不同数据类型

python - 使用函数替换空值

python - 如何将二进制类列转换为 numpy 数组

python - python中的动态方法生成

python - 如何删除仅包含某些值的行?

python - 如何使用 python 在 Django 应用程序中安排任务

python - 使用 pandas 组合工作表、迭代特定列、将行添加到新列表

python - 从 Pandas 数据框创建嵌套列表