pandas将分组行转换为列

时间:2016-12-03 04:43:42

标签: python pandas

我有一个数据框,例如:

label    column1
  a         1   
  a         2
  b         6
  b         4

我想创建一个包含新列的数据框,其中tag1的值与标签匹配。如:

label    column1    column2
  a         1          2
  a         2          1
  b         6          4
  b         4          6

我知道使用groupby命令可能非常简单,但我一直在搜索,找不到任何东西。

2 个答案:

答案 0 :(得分:0)

假设它们只是一对标签,您也可以使用以下内容:

# Create dataframe
df = pd.DataFrame(data = {'label' :['a', 'a', 'b', 'b'],
                 'column1' :[1,2, 6,4]})
# iterate over dataframe, identify matching label and opposite value
for index, row in df.iterrows():
    newvalue = int(df[(df.label == row.label) & (df.column1 != row.column1)].column1.values[0])
    # set value to new column
    df.set_value(index, 'column2', newvalue)

df.head()

答案 1 :(得分:0)

以下使用groupbyapply,似乎可行:

x = pd.DataFrame({ 'label': ['a','a','b','b'],
                   'column1': [1,2,6,4] })

y = x.groupby('label').apply(
    lambda g: g.assign(column2 = np.asarray(g.column1[::-1])))
y = y.reset_index(drop=True)  # optional: drop weird index

print(y)