连接来自同一数据框的列
Join columns from the same dataframe
所以,我有这个数据框,有些列被划分为 'Q7_part_1'、'Q7_part_2'...但它们都来自同一个问题。
我想做的是:将这些列合并为一列并排除 nan。
我试过 df = df[['Q7_Part_1', 'Q7_Part_2'...]].agg(','.join ,axix=1)
也试过 df['Q7'] = df['Q7_Part_1'].map(str) + df['Q7_Part_2'].map(str)...]
但这个只是加入了所有然后包括 nan 值。我还能做什么?
dataframe
你错过了一个关键部分 - dropna()
import pandas as pd
import numpy as np
df = pd.DataFrame({ "question":["q1","q2","q3"],'Q7_part_1':["Q1 part 1","Q2 part 1", np.nan], 'Q7_part_2':["Q1 part2",np.nan,"Q3 part 2"]})
df.assign(Q7=df.loc[:,[c for c in df.columns if "part" in c]].apply(lambda s: ",".join(s.dropna().astype(str)), axis=1))
question
Q7_part_1
Q7_part_2
Q7
0
q1
Q1 part 1
Q1 part2
Q1 part 1,Q1 part2
1
q2
Q2 part 1
nan
Q2 part 1
2
q3
nan
Q3 part 2
Q3 part 2
所以,我有这个数据框,有些列被划分为 'Q7_part_1'、'Q7_part_2'...但它们都来自同一个问题。
我想做的是:将这些列合并为一列并排除 nan。
我试过 df = df[['Q7_Part_1', 'Q7_Part_2'...]].agg(','.join ,axix=1)
也试过 df['Q7'] = df['Q7_Part_1'].map(str) + df['Q7_Part_2'].map(str)...]
但这个只是加入了所有然后包括 nan 值。我还能做什么?
dataframe
你错过了一个关键部分 - dropna()
import pandas as pd
import numpy as np
df = pd.DataFrame({ "question":["q1","q2","q3"],'Q7_part_1':["Q1 part 1","Q2 part 1", np.nan], 'Q7_part_2':["Q1 part2",np.nan,"Q3 part 2"]})
df.assign(Q7=df.loc[:,[c for c in df.columns if "part" in c]].apply(lambda s: ",".join(s.dropna().astype(str)), axis=1))
question | Q7_part_1 | Q7_part_2 | Q7 | |
---|---|---|---|---|
0 | q1 | Q1 part 1 | Q1 part2 | Q1 part 1,Q1 part2 |
1 | q2 | Q2 part 1 | nan | Q2 part 1 |
2 | q3 | nan | Q3 part 2 | Q3 part 2 |