如何在Pandas中添加可变数量的列?

时间:2015-07-15 17:30:53

标签: python pandas

我有一个函数,我将它应用于数据帧的行。此函数根据参数返回可变长度列表。

现在我使用以下示例代码:

import pandas as pd

df = pd.read_csv("data.csv")

def add_columns(x, amount):
    return range(amount)

df["L1"], df["L2"], df["L3"] = zip(*df.apply(lambda x: add_columns(x, 3), axis=1))

有没有办法自动添加标签?

1 个答案:

答案 0 :(得分:0)

不确定我是否正确理解了您想要填充列的内容,但这应该有效:

import pandas as pd
import numpy as np

def add_columns(x, *args):
    col_names = args[0]
    return pd.Series({i: x for i in col_names})

def add_range(x, *args):
    col_names = args[1]
    return pd.Series({k: v for k,v in zip(args[1],range(args[0]))})

df = pd.DataFrame(np.random.uniform(size=(10,2)),columns=["A","B"])

labels = ["L1","L2","L3"]

# This populates with values from "A" column
df.merge(df["A"].apply(add_columns, args=([labels])),left_index=True, right_index=True)

# This populates with values from range(number_passed) function
df.merge(df["A"].apply(add_range, args=([3,labels])),left_index=True, right_index=True)