繁体   English   中英

在 pandas dataframe 列上迭代并根据条件创建一个新列

[英]Iterate on a pandas dataframe column and create a new column based on condition

我是 Pandas 的新手,我在开发代码时遇到了一些问题。 我有一个 pandas dataframe 像这样: 在此处输入图像描述

我想要做的是创建一个新列“每米重量”,然后检查“设计部分”列中的每个元素,如果该元素等于“部分名称”列中的元素之一,则“每米重量”的值" 列将是“每单位长度的重量”中的相应元素。 像这样的一些事情:

在此处输入图像描述

我该怎么做?

您可以使用 map 或合并。 如果您的基础 dataframe 称为df ,则:

df['Weight per meter'] = df['Design Section'].map(df[['Section Name','Weight Per Unit Length']].set_index('Section Name').to_dict()['Weight Per Unit Length'])

或合并:

df['Weight per meter'] = df[['Design Section']].merge(df[['Section Name','Weight Per Unit Length']].drop_duplicates(),left_on='Design Section',right_on='Section Name',how='left')['Weight Per Unit Length

例如:

df = pd.DataFrame({'Col 1':['A','B','C','D','E'],
                   'Col 2':[1,2,3,4,5],
                   'Col 3':['G','B','C','D','F']})

df['Col 4'] = df['Col 3'].map(df[['Col 1','Col 2']].set_index('Col 1').to_dict()['Col 2'])

回报:

  Col 1  Col 2 Col 3  Col 4
0     A      1     G    NaN
1     B      2     B    2.0
2     C      3     C    3.0
3     D      4     D    4.0
4     E      5     F    NaN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM