给出以下数据框:
a = pd.DataFrame({'A': [1,2], 'B': [4,0], 'C': [1,2]})
a
A B C
0 1 4 1
1 2 0 2
我想创建一个新列D
,其中包含按列分隔的非空值(每行)。像这样:
A B C D
0 1 4 1 1,4,1
1 2 0 2 1,0,2
实际上,我会有很多专栏。 提前谢谢!
答案 0 :(得分:1)
替代方案:
a['D'] = a.apply(lambda row: ','.join(row.dropna()
.astype(int).astype(str)), axis=1)
print(a)
A B C D
0 1 4 1 1,4,1
1 2 0 2 2,0,2
答案 1 :(得分:1)
# example data with NaN values
a = pd.DataFrame({'A': [np.nan,2], 'B': [4,np.nan], 'C': [1,2]})
a
A B C
0 NaN 4.0 1
1 2.0 NaN 2
# make new column with non-null values
a['D'] = a.apply(lambda x: [val for val in x if not np.isnan(val)], axis=1)
a
A B C D
0 NaN 4.0 1 [4.0, 1.0]
1 2.0 NaN 2 [2.0, 2.0]
答案 2 :(得分:1)
您可以按照以下方式执行某些操作:
combVals = []
a = a.T
for col in a.columns:
combVals.append(str(a[col].dropna().astype(int).tolist())[1:-1])
a = a.T
a['D'] = combVals
print(a)
A B C D
0 1 4 1 1, 4, 1
1 2 0 2 2, 0, 2
您可以执行以下操作删除D
列中的空格:a['D'] = a['D'].str.replace(' ','')