如何将函数应用于多列以在 Pandas 中创建多列?

TKG

我试图在多个列上应用一个函数,然后创建多个列来计算每个条目的长度。

基本上我有 5 列,索引为 5,7,9,13 和 15,这些列中的每个条目都是表单的字符串,'WrappedArray(|2008-11-12, |2008-11-12)'在我的函数中,我尝试剥离wrappedArray 部分并拆分两个值并(length - 1)使用以下方法计算;

def updates(row,num_col):
    strp = row[num_col.strip('WrappedAway')
    lis  = list(strp.split(','))
    return len(lis) - 1

其中 num_col 是列的索引,cal 取值 5、7、9、13、15。我已经这样做了,但仅适用于 1 列:

fn = lambda row: updates(row,5)
col = df.apply(fn, axis=1)
df = df.assign(**{'count1':col.values})

我基本上想将此函数应用于所有列(不仅仅是上面提到的 5 列),然后在短代码中创建一个与列 5、7、9、13 和 15 关联的单独列,而不是分别为每个值。

我希望我说得有道理。

亚图

关于查找列表中元素的数量,看起来您可以简单地用于str.count()查找','字符串中的数量为了将定义的函数应用于一组列,您可以执行以下操作:

cols = [5,7,9,13,15]

for col in cols:
    col_counts = {'{}_count'.format(col): df.iloc[:,col].apply(lambda x: x.count(','))}
    df = df.assign(**col_counts)

或者,您也可以使用strip('WrappedAway').split(',')as you where using:

def count_elements(x):
    return len(x.strip('WrappedAway').split(',')) - 1

for col in cols:
    col_counts = {'{}_count'.format(col): 
                   df.iloc[:,col].apply(count_elements)}
    df = df.assign(**col_counts)

因此,例如使用以下数据框:

df = pd.DataFrame({'A': ['WrappedArray(|2008-11-12, |2008-11-12, |2008-10-11)', 'WrappedArray(|2008-11-12, |2008-11-12)'],
               'B': ['WrappedArray(|2008-11-12,|2008-11-12)', 'WrappedArray(|2008-11-12, |2008-11-12)'],
               'C': ['WrappedArray(|2008-11-12|2008-11-12)', 'WrappedArray(|2008-11-12|2008-11-12)']})

重新定义我们要计算元素数量的列集:

for col in [0,1,2]:
    col_counts = {'{}_count'.format(col): 
                  df.iloc[:,col].apply(count_elements)}
    df = df.assign(**col_counts)

会产生:

 A  \
0  WrappedArray(|2008-11-12, |2008-11-12, |2008-1...   
1             WrappedArray(|2008-11-12, |2008-11-12)   

                                    B  \
0   WrappedArray(|2008-11-12,|2008-11-12)   
1  WrappedArray(|2008-11-12, |2008-11-12)   

                                  C         0_count  1_count  2_count  
0  WrappedArray(|2008-11-12|2008-11-12)        2        1        0  
1  WrappedArray(|2008-11-12|2008-11-12)        1        1        0 

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

pandas DataFrame,如何将功能应用于特定列?

将pandas函数应用于列以创建多个新列?

如何使用groupby将多个函数应用于Pandas中的多个列?

如何根据另一个列中的值将函数应用于Pandas中的列?

将函数应用于pandas数据框中的列

如何将lambda函数应用于满足PANDAS中条件的行

如何将不同的聚合函数应用于pandas中的不同列?

将函数应用于不接受NaN的pandas列

将Python函数应用于多个Pandas列

Pandas DataFrame将功能应用于多列并输出多列

如何将聚合函数应用于Pandas中数据透视表的所有列

pandas groupby将相同的功能应用于多列

按列将函数应用于Pandas数据框

使用 Args 将函数应用于多个 Pandas 列

如何将正则表达式应用于 Pandas 中的列以查找值,然后对其应用函数?

如何将Window函数应用于DataFrame中的多列

Pandas:将函数应用于行,写入新列

将函数应用于跨列的 Pandas DataFrame 以创建用于排序的临时列

Pandas:如何将接受数组的函数应用于列?

将 apply() 函数应用于 Pandas 中的多列?

Python pandas 数据框将函数结果应用于多列,其中 NaN

如何将字典应用于包含 Pandas 中的 numpy 数组的数据框列

如何将简单函数应用于多列?

如何将具有多个变量的函数应用于 Pandas 数据帧的一列(当无法更改 func 中的变量顺序时)

使用 pd.loc 将函数应用于 pandas 数据帧的多行和多列

如何将函数应用于 Pandas 中的多个多索引列?

Pandas:如何将复杂函数应用于数据框的一列,另外两列作为函数的输入?

将函数应用于 Pandas 数据框的两列

Pandas 通过计算多列将函数应用于每一行