list
sにはstr.split
を使用し、length
にはlen
を取得できます。
最終numpy.repeat
とnumpy.concatenate
でconstructor
によって新しいDataFrame
を作成します。
s = df['Checksum'].str.split(',')
print (s)
0 [e882]
1 [2884]
2 [ee12, ee84]
3 [ee23]
4 [ee42, ee43]
5 [2884, 2993, 3884, 3855]
6 [344, 122, 288]
Name: Checksum, dtype: object
l = s.str.len()
print (l)
0 1
1 1
2 2
3 1
4 2
5 4
6 3
Name: Checksum, dtype: int64
cols = ['Id','name']
df = pd.DataFrame({x : np.repeat(df[x].values, l) for x in cols})
df['Checksum'] = np.concatenate(s)
df = df.reindex_axis(df.columns, axis=1)
print (df)
Id name Checksum
0 2001 A e882
1 2002 B 2884
2 2002 C ee12
3 2002 C ee84
4 2003 D ee23
5 2004 E ee42
6 2004 E ee43
7 2006 F 2884
8 2006 F 2993
9 2006 F 3884
10 2006 F 3855
11 2006 G 344
12 2006 G 122
13 2006 G 288
をchain.from_iterable
とAltrnative:
from itertools import chain
s = df['Checksum'].str.split(',')
l = s.str.len()
cols = ['Id','name']
df = pd.DataFrame({x : np.repeat(df[x].values, l) for x in cols})
df['Checksum'] = list(chain.from_iterable(s))
df = df.reindex_axis(df.columns, axis=1)
print (df)
Id name Checksum
0 2001 A e882
1 2002 B 2884
2 2002 C ee12
3 2002 C ee84
4 2003 D ee23
5 2004 E ee42
6 2004 E ee43
7 2006 F 2884
8 2006 F 2993
9 2006 F 3884
10 2006 F 3855
11 2006 G 344
12 2006 G 122
13 2006 G 288
jezrael @それは動作しませんし、私のような15個の列を持っています名前列、私は手動で行うことはできません....私はjusだった名前列の例を示します。名前列のような類似の列があります – Jitesh
エラーとは何ですか?または出力が異なっていますか? – jezrael
すべてがナノです – Jitesh