如何将列添加到列表中的所有数据框

韦斯卡

我有一个数据框列表,我想为每个数据框计算某些列的字符串值的长度,并使用这些计算出的值创建一个新列:

columns = ['name', 'address', 'email']
newcolumns = ['name_length', 'address_length', 'email_length']

码:

def length(start, i, j):
    while i < len(columns):
        newcol = newcolumns[i]
        col = columns[j]
        df_list[start][newcol] = df_list[start][col].str.len()
        i += 1
        j += 1
    start += 1
    return df_list

每个单独的数据框都可以像列表一样进行访问,即df[0]

我得到的结果仅计算了第一个数据帧的名称和地址长度。其余数据框未计算。

预期结果是所有数据框中的所有指定列均获得了计算结果。理想的答案将是通过使用lambda循环使其自动化来实现。

我该如何修改我的代码?

特伦顿·麦金尼
  • 为了更新中的每个数据框df_list,必须对其进行正确索引,以便将新的列分配给中的正确数据框list,这是通过使用enumerate
  • 在显示的3个选项中,.applymap(len)对于10万行的数据帧,这是最快的选项。
import pandas as pd

# create sample data
data = {'test': range(3), 'name': ['a', 'bc', 'def'], 'address': ['add1', 'add11', 'add111'],
        'email': ['[email protected]', '[email protected]', '[email protected]']}
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(data)
df_list = [df1, df2]

columns = ['name', 'address', 'email']
newcolumns = ['name_length', 'address_length', 'email_length']

# iterate through list of dataframes and add _length columns
for i, df in enumerate(df_list):
    
    # create the new columns and assign them to the correct dataframe in the list
    df_list[i][newcolumns] = df[columns].applymap(len)

# display(df1)
   test name address                                                           email  name_length  address_length  email_length
0     0    a    add1  [email protected]            1               4            62
1     1   bc   add11                                                [email protected]            2               5            16
2     2  def  add111                                              [email protected]            3               6            18
  • 从技术上讲,无需使用enumerate索引列表中的每个数据框就可以完成此操作
    • 这适用于lists数据框,因为它df是一个引用,因此在循环中对其进行更新时,会更新其中的适当数据框list
    • 我认为所发生的事情不太明显,这就是为什么我使用显示代码的原因enumerate
for df in df_list:
    df[newcolumns] = df[columns].applymap(len)

备择方案

选择1

# zip the columns and new column name together
cols = list(zip(columns, newcolumns))

# iterate through list of dataframe
for i, df in enumerate(df_list):

    # iterate through the column name pairs
    for c in cols:

        # create the columns using .str.len()
        df_list[i][c[1]] = df[c[0]].str.len()

选择2

for i, df in enumerate(df_list):
    df_list[i][newcolumns] = df[columns].apply(lambda x: x.str.len())

%%timeit 测试

# sample dataframe with 99999 rows
d = pd.concat([df1]* 33333).reset_index(drop=True)

# functions to test
columns = ['name', 'address', 'email']
newcolumns = ['name_length', 'address_length', 'email_length']
cols = list(zip(columns, newcolumns))

def test1(df):
    df[newcolumns] = df[columns].applymap(len)
    return df


def test2(df):
    for c in cols:
        df[c[1]] = df[c[0]].str.len()
    return df
    

def test3(df):
    df[newcolumns] = df[columns].apply(lambda x: x.str.len())
    return df


# tests
%%timeit
test1(d)
[out]:
67.6 ms ± 1.56 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

%%timeit
test2(d)
[out]:
87.6 ms ± 2.26 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

%%timeit
test3(d)
[out]:
89.4 ms ± 543 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Pyspark中,如何将值列表作为新列添加到现有数据框?

来自分类Dev

将列表的列表作为列添加到python中的现有数据框

来自分类Dev

如何将用户输入中的列添加到现有数据框中?

来自分类Dev

如何一次将多个列添加到现有数据框中?

来自分类Dev

如何将txt中的所有项目添加到列表框中?

来自分类Dev

如何将列添加到数据框中?

来自分类Dev

如何将列表中的元素添加到数据框作为保留顺序的列?

来自分类Dev

将列添加到现有数据框,但将所有数字输入为NaN

来自分类Dev

将 1 添加到数据框中的所有数值

来自分类Dev

如何将从方法获得的结果列添加到现有数据框?

来自分类Dev

如何将列添加到现有的填充数据框中

来自分类Dev

将列表中的随机元素添加到现有数据框字符串

来自分类Dev

如何将列表框的所有项目添加到文本框

来自分类Dev

如何将值列表中的数据添加到列表中的每个数据框?

来自分类Dev

如何将数组数据添加到 PHP 中的现有数组数据?

来自分类Dev

将纬度和经度列添加到现有数据框中

来自分类Dev

如何将更长的列表添加到数据框

来自分类Dev

如何将品牌名称列表添加到数据框中,或者如果没有出现则添加“无”?

来自分类Dev

将一列数据框添加到R中的现有数据框列中?

来自分类Dev

如何将自动增量 ID 列添加到带有数据的表中

来自分类Dev

如何将嵌套列表作为新列添加到现有的熊猫数据框

来自分类Python

如何将空列添加到数据框?

来自分类Dev

如何将列表名称添加到df作为数据框的列

来自分类Dev

如何将具有特定数据的新列添加到 R 数据框中

来自分类Dev

如何将具有百分比更改值的新行添加到现有格式的现有数据框中?

来自分类Dev

如何将UserControl中的所有文本框添加到GridView中

来自分类Dev

如何将数据类字段的所有值添加到另一个列表中

来自分类Dev

将数据框添加到特定行和列的现有数据框

来自分类Dev

R:如何将数据框添加到列表中?

Related 相关文章

  1. 1

    在Pyspark中,如何将值列表作为新列添加到现有数据框?

  2. 2

    将列表的列表作为列添加到python中的现有数据框

  3. 3

    如何将用户输入中的列添加到现有数据框中?

  4. 4

    如何一次将多个列添加到现有数据框中?

  5. 5

    如何将txt中的所有项目添加到列表框中?

  6. 6

    如何将列添加到数据框中?

  7. 7

    如何将列表中的元素添加到数据框作为保留顺序的列?

  8. 8

    将列添加到现有数据框,但将所有数字输入为NaN

  9. 9

    将 1 添加到数据框中的所有数值

  10. 10

    如何将从方法获得的结果列添加到现有数据框?

  11. 11

    如何将列添加到现有的填充数据框中

  12. 12

    将列表中的随机元素添加到现有数据框字符串

  13. 13

    如何将列表框的所有项目添加到文本框

  14. 14

    如何将值列表中的数据添加到列表中的每个数据框?

  15. 15

    如何将数组数据添加到 PHP 中的现有数组数据?

  16. 16

    将纬度和经度列添加到现有数据框中

  17. 17

    如何将更长的列表添加到数据框

  18. 18

    如何将品牌名称列表添加到数据框中,或者如果没有出现则添加“无”?

  19. 19

    将一列数据框添加到R中的现有数据框列中?

  20. 20

    如何将自动增量 ID 列添加到带有数据的表中

  21. 21

    如何将嵌套列表作为新列添加到现有的熊猫数据框

  22. 22

    如何将空列添加到数据框?

  23. 23

    如何将列表名称添加到df作为数据框的列

  24. 24

    如何将具有特定数据的新列添加到 R 数据框中

  25. 25

    如何将具有百分比更改值的新行添加到现有格式的现有数据框中?

  26. 26

    如何将UserControl中的所有文本框添加到GridView中

  27. 27

    如何将数据类字段的所有值添加到另一个列表中

  28. 28

    将数据框添加到特定行和列的现有数据框

  29. 29

    R:如何将数据框添加到列表中?

热门标签

归档