lambda 不是 'nan' 的数据框中一列中的每一行
lambda each row in a column from dataframe that is not 'nan'
在下面的代码中,我如何为非“nan”、“null”或换句话说为空白的行迭代 lambda?
输出仍然附加“.pdf”到空白行。
model1 model2 model3
0 File1.pdf File3.pdf File2.pdf
1 File2.pdf nan.pdf File2.pdf
2 File3.pdf nan.pdf File2.pdf
model_types = []
for col in df.columns:
model_types.append(col)
df[col] = df[col].apply(lambda x: f"{x}.pdf" if x != 'nan' else x) # this part
首先将您的 nans 转换为 None
。
df1 = df.where(pd.notnull(df), None)
for col in df1:
df1[col].apply(lambda x: f"{x}.pdf" if x else None)
如果您有真正的 NaN,您应该能够直接添加“.pdf”以矢量化方式,这应该不会影响 NaN。
model_types = []
for col in df.columns:
model_types.append(col)
df[col] += '.pdf'
或者,您也可以使用:
model_types = list(df)
df = df.stack().add('.pdf').unstack()
# or
df = df.apply(lambda s: s+'.pdf')
输出:
model1 model2 model3
0 File1.pdf File3.pdf File2.pdf
1 File2.pdf NaN File2.pdf
2 File3.pdf NaN File2.pdf
对于那些想要更“通用”的解决方案的人,您可以处理:
- 0 和 整数
- 浮点数数字
- pd.NA = <不适用>
- np.nan = NaN
正在创建 DF:
import pandas as pd
import numpy as np
df = pd.DataFrame({'Col1':[0,"File2",1.23], 'Col2':["File1",pd.NA,"File3"], 'Col3':["File1","File2",np.nan]})
df
index
Col1
Col2
Col3
0
0
File1
File1
1
File2
<NA>
File2
2
1.23
File3
NaN
df1 = df.applymap(lambda x: x+'.pdf' if type(x) == str else x, na_action='ignore')
df1
index
Col1
Col2
Col3
0
0
File1.pdf
File1.pdf
1
File2.pdf
<NA>
File2.pdf
2
1.23
File3.pdf
NaN
在下面的代码中,我如何为非“nan”、“null”或换句话说为空白的行迭代 lambda?
输出仍然附加“.pdf”到空白行。
model1 model2 model3
0 File1.pdf File3.pdf File2.pdf
1 File2.pdf nan.pdf File2.pdf
2 File3.pdf nan.pdf File2.pdf
model_types = []
for col in df.columns:
model_types.append(col)
df[col] = df[col].apply(lambda x: f"{x}.pdf" if x != 'nan' else x) # this part
首先将您的 nans 转换为 None
。
df1 = df.where(pd.notnull(df), None)
for col in df1:
df1[col].apply(lambda x: f"{x}.pdf" if x else None)
如果您有真正的 NaN,您应该能够直接添加“.pdf”以矢量化方式,这应该不会影响 NaN。
model_types = []
for col in df.columns:
model_types.append(col)
df[col] += '.pdf'
或者,您也可以使用:
model_types = list(df)
df = df.stack().add('.pdf').unstack()
# or
df = df.apply(lambda s: s+'.pdf')
输出:
model1 model2 model3
0 File1.pdf File3.pdf File2.pdf
1 File2.pdf NaN File2.pdf
2 File3.pdf NaN File2.pdf
对于那些想要更“通用”的解决方案的人,您可以处理:
- 0 和 整数
- 浮点数数字
- pd.NA = <不适用>
- np.nan = NaN
正在创建 DF:
import pandas as pd
import numpy as np
df = pd.DataFrame({'Col1':[0,"File2",1.23], 'Col2':["File1",pd.NA,"File3"], 'Col3':["File1","File2",np.nan]})
df
index | Col1 | Col2 | Col3 |
---|---|---|---|
0 | 0 | File1 | File1 |
1 | File2 | <NA> | File2 |
2 | 1.23 | File3 | NaN |
df1 = df.applymap(lambda x: x+'.pdf' if type(x) == str else x, na_action='ignore')
df1
index | Col1 | Col2 | Col3 |
---|---|---|---|
0 | 0 | File1.pdf | File1.pdf |
1 | File2.pdf | <NA> | File2.pdf |
2 | 1.23 | File3.pdf | NaN |