【发布时间】:2021-02-26 16:28:48
【问题描述】:
我有一个类似这样的数据框:
data = {"col_1": [0, 1, 2],
"col_2": ["abc", "defg", "hi"]}
df = pd.DataFrame(data)
视觉上:
col_1 col_2
0 0 abc
1 1 defg
2 2 hi
我想做的是拆分 col_2 中的每个字符,并将其作为新列添加到数据框
示例迭代方法:
def get_chars(string):
chars = []
for char in string:
chars.append(char)
return chars
char_df = pd.DataFrame()
for i in range(len(df)):
char_arr = get_chars(df.loc[i, "col_2"])
temp_df = pd.DataFrame(char_arr).T
char_df = pd.concat([char_df, temp_df], ignore_index=True, axis=0)
df = pd.concat([df, char_df], ignore_index=True, axis=1)
结果是正确的形式:
0 1 2 3 4 5
0 0 abc a b c NaN
1 1 defg d e f g
2 2 hi h i NaN NaN
但我认为像这样迭代数据帧效率非常低,所以我想找到一个更快(理想的矢量化)解决方案。
实际上,我并没有真正拆分字符串,但这个问题的重点是找到一种方法来有效地处理一列并返回许多列。
【问题讨论】: