pandas - Python 3 pandas 使用长度添加带有 if then 语句的列

标签 pandas if-statement conditional-statements python-3.5 calculated-columns

在 Python 3 Pandas 中处理需要创建新列的数据框。我有两个相似的列,具有不同长度的字符串。新列应返回长度为 13 个字符的第 1 列或第 2 列。在 Excel 中,我会将其写为:c2=if(len(b2)=13,b2,a2),然后将公式复制下来。

我需要解释的代码是:

df = pd.read_csv("example15.csv")

#create a new column with if-then statment
df['13_digit_#'] = (df.column1 len = 13 or df.column2 len = 13)

我该如何重写最后一行? 非常感谢!

最佳答案

我认为您可以将 numpy.wherestr.lenapply(len) 一起使用:

df['13_digit_#'] = np.where((df.column1.str.len() == 13) | 
                            (df.column2.str.len() == 13), 'a', 'b')

或者如果有其他条件:

df['13_digit_#'] = np.where(df.column1.str.len() == 13, df.column1, df.column2)

示例:

df = pd.DataFrame({'column1':['0123456789abc','a','b'],
                   'column2':['abcabcabcabca','c','d']})

print (df)
         column1        column2
0  0123456789abc  abcabcabcabca
1              a              c
2              b              d

df['13_digit_#'] = np.where(df.column1.str.len() == 13, df.column1, df.column2)
#df['13_digit_#'] = np.where(df.column1.apply(len) == 13, df.column1, df.column2)
print (df)
         column1        column2     13_digit_#
0  0123456789abc  abcabcabcabca  0123456789abc
1              a              c              c
2              b              d              d

关于pandas - Python 3 pandas 使用长度添加带有 if then 语句的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39833221/

相关文章:

objective-c - 用三元运算符替换 If 语句

python - 如何在行值而不是列值中绘制箱线图

python - 在 pandas groupby 对象中创建求和和除法

python - 将数组添加到 Pandas 数据框

php - 合并多个 POST 并将其添加到表中

PHP 查询 + IF ELSE

python - 打印分组实例计数后,将 python 数据框中的分组结果展平

python - Pandas:使用条件和运算符(或和)的 Lambda 函数

javascript - 条件练习 addWithSurcharge

javascript - 在 if 语句中使用 javascript 函数