Python:pandas DataFrame基于其他列的新列

Bartek Nowakowski

我有df2列,如下所示:

        A       B
0  100-00     nan
1  200-00     nan
2   other  300-00
3  100-00    text
4   other     nan

我需要创建列C,它将应用如下逻辑:

  • 如果B是nan,那么A
  • 如果B以数字开头,则B
  • 其他的

我有下面的代码,它工作正常,但我相信可能会有更好,更有效的方法:

C = []
for r in range(df.shape[0]):
    if df['B'].iloc[r] == 'nan':
        C.append(df['A'].iloc[r])
    elif df['B'].iloc[r][:3].isnumeric():
        C.append(df['B'].iloc[r])
    else:
        C.append(df['A'].iloc[r])
df['C'] = C

df
        A       B       C
0  100-00     nan  100-00
1  200-00     nan  200-00
2   other  300-00  300-00
3  100-00    text  100-00
4   other     nan   other

预先感谢您的所有帮助。

耶斯列尔

我简化了解决方案,df.B如果输入的第一个字符用正则表达式进行了df.B数字测试,Series.str.contains^用于字符串的开头和\d数字numpy.where

df['C'] = np.where(df['B'].str.contains(r'^\d', na=False), df.B, df.A)
#alternative
#df['C'] = df.B.where(df['B'].str.contains(r'^\d', na=False), df.A)
print (df)
        A       B       C
0  100-00     NaN  100-00
1  200-00     NaN  200-00
2   other  300-00  300-00
3  100-00    text  100-00
4   other     NaN   other

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何基于Pandas DataFrame中其他列的值创建新列

Pandas / Python:根据行值和其他DataFrame设置新列的值

如何基于Pandas数据框中其他多个列的值添加两个新列?

根据其他列的值为Pandas Dataframe创建列

Python Pandas:基于其他列添加列

python pandas dataframe从其他列的单元格创建新列

pandas Dataframe:根据其他列创建标签的新列

Python Pandas:从value不为null的其他列中创建新列

使用pandas聚合基于其他列的结果

python pandas根据其他列中的条件进行新列分类

从同一DataFrame中的其他行创建新的Pandas DataFrame列等于值

通过pandas获取基于其他列的值的最新值

Pandas DataFrame聚合列,其他列的名称为值

根据其他列的if-else填充pandas DataFrame的新列

如何基于其他列在Python中创建等级列

Pandas DataFrame过滤基于其他列的str列

如何基于Python Pandas中的其他列在DataFrame中创建新列?

根据其他多个列的条件创建新的Python DataFrame列

如何在Pandas数据框中的其他列中填充基于新列的值

从Groupby创建新的Pandas列并划分其他列

如果其他条件在python中在dataframe中创建一个新列

根据Pandas DataFrame中其他列的条件创建新列

Python-根据其他列的条件创建新列

从Pandas数据框中的其他列创建新列

根据其他列在Pandas DataFrame中创建新列

Python列均值基于其他列条件

如何基于其他行上的条件创建列-Pandas Dataframe?

Python Pandas:基于组内的最大值创建新列,但使用其他(字符串)列中的值

Pandas Dataframe根据其他列的计数添加列