3 回答
TA贡献1843条经验 获得超7个赞
如果我理解正确的话,这是一种方法:
pd.concat([
serie_1[lambda x: x != ''].reset_index(drop=True).rename('col1'),
serie_2[lambda x: x != ''].reset_index(drop=True).rename('col2')
], axis=1)
col1 col2
0 a d
1 b e
2 c f
3 NaN g
逻辑是:选择非空条目(使用 lambda 表达式)。从 0 重新开始索引编号(使用重置索引)。设置列名(重命名)。创建一个宽表(合并函数中的 axis=1)。
TA贡献1824条经验 获得超6个赞
一种使用方式pandas.concat:
ss = [serie_1, serie_2]
df = pd.concat([s[s.ne("")].reset_index(drop=True) for s in ss], 1)
print(df)
输出:
0 1
0 a d
1 b e
2 c f
3 NaN g
TA贡献1859条经验 获得超6个赞
在创建这样的数据框之前,我会过滤掉空白值:
import pandas as pd
def filter_blanks(string_list):
return [e for e in string_list if e]
serie_1 = pd.Series(filter_blanks(['a','','b','c','','']))
serie_2 = pd.Series(filter_blanks(['','d','','','e','f','g']))
pd.concat([serie_1, serie_2], axis=1)
结果是:
0 1
0 a d
1 b e
2 c f
3 NaN g
添加回答
举报