[英]Python:how to split column into multiple columns in a dataframe and with dynamic column naming
我有一个示例数据集
id value
[10,10] ["apple","orange"]
[15,67] ["banana","orange"]
[12,34,45] ["apple","banana","orange"]
我想把它转换成
id1 id2 id3 value1 value2 value3
10 10 nan apple orange nan
15 67 nan banana orange nan
10 10 45 apple banana orange
我们可以使用tolist
和pd.DataFrame
重建您的数据。 那么concat
一切再度合作:
d = [pd.DataFrame(df[col].tolist()).add_prefix(col) for col in df.columns]
df = pd.concat(d, axis=1)
id0 id1 id2 value0 value1 value2
0 10 10 NaN apple orange None
1 15 67 NaN banana orange None
2 12 34 45.0 apple banana orange
试试这个代码。
df = pd.DataFrame({"id":[[10, 10], [15, 67], [12, 34, 45]],
"value":[['a', 'o'], ['b', 'o'], ['a', 'b', 'o']]})
output = pd.DataFrame()
for col in df.columns:
output = pd.concat([output,
pd.DataFrame(df[col].tolist(), columns = [col + str(i+1) for i in range(df[col].apply(len).max())])],
axis = 1)
关键代码是pd.DataFrame(df[col].tolist(), columns = [col + str(i+1) for i in range(df[col].apply(len).max())])]
。
这里, df[col].apply(len).max()
是列中列表中元素的最大数量。 df[col].tolist()
将df[col]
转换为嵌套列表,并将其重新制作为 DataFrame。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.