Python 3 pandas 使用 length 添加一个带有 if then 语句的列
Python 3 pandas add a column with if then statement using length
正在处理 Python 3 Pandas 中的数据框,需要创建一个新列。我有两个具有不同长度字符串的相似列。新列应该 return 具有 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.where
with str.len
或 apply(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
假设每列的空白或缺失元素为 NaN,则以下内容将删除没有完整观测值的列,并将其作为新变量保存在数据框中
import pandas as pd
import numpy as np
df = pd.DataFrame({'a':[1,2,3], 'b':[1,2,np.nan], 'b':[1, np.nan, np.nan]})
df['newcol'] = df[['a','b']].dropna(axis = 1, how = 'any')
在最后一行中,axis = 1 告诉命令查看每一列(a 和 b),"how = 'any'" 告诉它删除具有任何缺失值的列并将其保存为 'newcol'.
正在处理 Python 3 Pandas 中的数据框,需要创建一个新列。我有两个具有不同长度字符串的相似列。新列应该 return 具有 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.where
with str.len
或 apply(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
假设每列的空白或缺失元素为 NaN,则以下内容将删除没有完整观测值的列,并将其作为新变量保存在数据框中
import pandas as pd
import numpy as np
df = pd.DataFrame({'a':[1,2,3], 'b':[1,2,np.nan], 'b':[1, np.nan, np.nan]})
df['newcol'] = df[['a','b']].dropna(axis = 1, how = 'any')
在最后一行中,axis = 1 告诉命令查看每一列(a 和 b),"how = 'any'" 告诉它删除具有任何缺失值的列并将其保存为 'newcol'.