【发布时间】:2016-11-08 19:59:27
【问题描述】:
我想以这种方式合并数据框中的列:
list_A list_B
A, T, G G, C
B, K
C, L, AG L, AG, K
F, K
输出应该是:
list_A list_B list_A&B
A, T, G G, C A, T, G, C
B, K B, K
C, L, AG L, AG, K C, L, AG, K
F, K F, K
我做到了:
df['list_A&B'] = df['list_A'].astype(list) + ', ' + df['list_B'].astype(list)
而且,我得到:
list_A list_B list_A&B
0 A, T, G G, C A, T, G, G, C
1 NaN B, K NaN
2 C, L, AG L, AG, K C, L, AG, L, AG, K
3 F, K NaN NaN
当列表之一为空时,列表的并集是一个问题。但是,为什么?
然后我尝试联合为字符串,但现在无法删除添加的 nan:
df['list_A&B'] = df['list_A'].astype(str) + ', ' + df['list_B'].astype(str)
给出:
list_A list_B list_A&B
0 A, T, G G, C A, T, G, G, C
1 NaN B, K nan, B, K
2 C, L, AG L, AG, K C, L, AG, L, AG, K
3 F, K NaN F, K, nan
使用此输出,我很难删除“nan”,因为它们被报告为字符串,而 dropna() 和 fillna() 无法使用它。
任何建议! - K
【问题讨论】:
-
您的列中的实际值是多少?它们只是像
"A, T, G"这样的字符串吗?什么是空值?它们是空字符串吗?您能否提供一个包含示例数据的独立示例(即生成示例 DataFrame 的代码)? -
列中的实际值为字母或字符串列表。该列是制表符分隔的,列中的任何空值都是空字符串
i.e the empty row/columns cells are just tab jumps without any white space to represent the empty value/list.此数据框是通过使用 pandas 合并函数连接两个数据框生成的,其中空值为 (NaN)。用于合并的键不太相关(我认为)并且没有显示。 -
我在您的数据中没有看到任何列表。如果有列表,我希望值是,例如,
["A", "T", "G"]。
标签: python list pandas array-merge