Eda*_*ame 3 aggregate dataframe python-3.x pandas
我有以下数据框my_df
:
name numbers
----------------------
A [4,6]
B [3,7,1,3]
C [2,5]
D [1,2,3]
Run Code Online (Sandbox Code Playgroud)
我想将所有数字合并到一个新列表中,因此输出应该是:
new_numbers
---------------
[4,6,3,7,1,3,2,5,1,2,3]
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
def combine_list(my_lists):
new_list = []
for x in my_lists:
new_list.append(x)
return new_list
new_df = my_df.agg({'numbers': combine_list})
Run Code Online (Sandbox Code Playgroud)
但new_df
看起来仍然和原来的一样:
numbers
----------------------
0 [4,6]
1 [3,7,1,3]
2 [2,5]
3 [1,2,3]
Run Code Online (Sandbox Code Playgroud)
我做错了什么?我该如何制作new_df
:
new_numbers
---------------
[4,6,3,7,1,3,2,5,1,2,3]
Run Code Online (Sandbox Code Playgroud)
谢谢!
您需要展平值,然后Dataframe
通过构造函数创建新值:
flatten = [item for sublist in df['numbers'] for item in sublist]
Run Code Online (Sandbox Code Playgroud)
或者:
flatten = np.concatenate(df['numbers'].values).tolist()
Run Code Online (Sandbox Code Playgroud)
或者:
from itertools import chain
flatten = list(chain.from_iterable(df['numbers'].values.tolist()))
Run Code Online (Sandbox Code Playgroud)
df1 = pd.DataFrame({'numbers':[flatten]})
Run Code Online (Sandbox Code Playgroud)
print (df1)
numbers
0 [4, 6, 3, 7, 1, 3, 2, 5, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
时间安排在这里。
归档时间: |
|
查看次数: |
2639 次 |
最近记录: |