我有一个数据框,例如:
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命令可能非常简单,但我一直在搜索,找不到任何东西。
答案 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)
以下使用groupby
和apply
,似乎可行:
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)