我编写了一个函数(包含从堆栈溢出中清除的位和部分),它将逐行移动整个数据帧,将字符串从 col-x 交错到 col-y,用于所有行中的所有两列 x,y 对。
我有一个可行的解决方案。问题是大型数据帧运行缓慢。
有更快的方法吗?
我尝试了以下设置:
# Import modules
import pandas as pd
from itertools import chain, zip_longest
def interleave_strings(string1, string2):
tuples = zip_longest(string1, string2, fillvalue='')
string_list = [''.join(item) for item in tuples]
return ''.join(string_list)
# Create the pandas DataFrame
data = [['timy', 'toma', 'tama', 'tima', 'tomy', 'tome'], ['nicka', 'nacka', 'nucka', 'necka', 'nomy', 'nome'], ['julia', 'Julia', 'jalia', 'jilia', 'jomy', 'jome']]
df = pd.DataFrame(data, columns = ['A', 'B', 'C', 'D', 'E', 'F'])
df
这让我们...
timy toma tama tima tomy tome
nicka nacka nucka necka nomy nome
julia Julia jalia jilia jomy jome
这有效,但慢慢地......
# new_df
il_df = pd.DataFrame()
for i in range (int(len(df.columns)/2)):
selection = df.iloc[:,2*i:2*i+2]
L = []
for j in range (len(df.index)):
res = interleave_strings(selection.iloc[j,0], selection.iloc[j,1])
L.append(res)
S = pd.Series(L)
#il_df = pd.concat(D, ignore_index=True)
il_df = il_df.append(S, ignore_index=True)
与
il_df.transpose()
正确的输出是:
0 1 2
0 ttiommya ttaimmaa ttoommye
1 nniacckkaa nnuecckkaa nnoommye
2 jJuulliiaa jjailliiaa jjoommye