首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:创建新列并从其他行复制值,这是当前行的交换

问Python:创建新列并从其他行复制值,这是当前行的交换
EN

Stack Overflow用户
提问于 2018-11-15 07:10:02
回答 2查看 34关注 0票数 2

我有一个dataframe,它有3列:

代码语言:javascript
复制
import pandas as pd

d = {'A':  ['left', 'right', 'east', 'west', 'south', 'north'], 'B': ['right', 'left', 'west', 'east', 'north', 'south'], 'VALUE': [0, 1, 2, 3, 4, 5]}

df = pd.DataFrame(d)

Dataframe看起来如下:

代码语言:javascript
复制
  A       B   VALUE
left    right   0
right   left    1
east    west    2
west    east    3
south   north   4
north   south   5

我正在尝试创建一个新的列VALUE_2,它应该包含来自同一个Dataframe中交换行的值。

例:右左值为0,左-右值为1,我希望新列中的交换值如下:

代码语言:javascript
复制
  A       B   VALUE VALUE_2
left    right   0     1
right   left    1     0
east    west    2     3
west    east    3     2
south   north   4     5
north   south   5     4

我试过:

代码语言:javascript
复制
for row_num, record in df.iterrows():
    A = df['A'][index]
    B = df['B'][index]
    if(pd.Series([record['A'] == B, record['B'] == A).all()):
        df['VALUE_2'] = df['VALUE']

我很惊讶,投入将是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-15 07:13:27

map在Series中的应用

代码语言:javascript
复制
df['VALUE_2'] = df['A'].map(df.set_index('B')['VALUE'])
print (df)
       A      B  VALUE  VALUE_2
0   left  right      0        1
1  right   left      1        0
2   east   west      2        3
3   west   east      3        2
4  south  north      4        5
5  north  south      5        4
票数 2
EN

Stack Overflow用户

发布于 2018-11-15 07:53:25

只是一个更详细的回答:

代码语言:javascript
复制
import pandas as pd

d = {'A':  ['left', 'right', 'east', 'west', 'south', 'north'], 'B': ['right', 'left', 'west', 'east', 'north', 'south'], 'VALUE': [0, 1, 2, 3, 4, 5]}

df = pd.DataFrame(d)

pdf = pd.DataFrame([])
for idx, item in df.iterrows():
    indx = list(df['B']).index(str(df['A'][idx]))
    pdf = pdf.append(pd.DataFrame({'VALUE_2': df.iloc[indx][2]}, index=[0]), ignore_index=True)

print(pdf)
data = pd.concat([df, pdf], axis=1)
print(data)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53314127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档