[英]Transform pandas Series with variable length comma separated values to Dataframe
[英]How is a pandas column of rows containing variable length and comma separated strings of values, stacked into separate values?
我正在嘗試分離熊貓列中的特定值,以便任何“組”值成為單獨的值。
我目前用來執行此操作的代碼如下:
import csv
import pandas as pd
data = pd.read_csv('ctabuses.csv')
route_column = data['routes']
with open('results.csv', 'wt+') as csv_file:
writer = csv.writer(csv_file)
for value in route_column:
writer.writerow(value.split)
但是,當我將內容寫入文件時,它會生成以下內容:
126
121,123
1,7,X28,126,129,130,132,151
1,7,X28,126,129,130,151
1,7,X28,126,129,130
1,7,X28,126,129
1,3,4,7,J14,26,X28,126,129,132,143,147,148
7,126,132,143,147
1,7,X28,126,129
3,4,6,J14,26,143
1,7,X28,126,129,151
1,7,X28,126,129,130,134,135,136,151,156
125,126
126
126
126
我已經搜索並嘗試了所有我能想到的方法並不斷得到相同的結果。
編輯:預期結果如果我遇到一組這樣的值,我的預期輸出:
1,7,X28,126,129,130,134,135,136,151,156
應該:
1
7
X28
126
129
130
134
135
136
151
156
然后將用於導入 MySQL 數據庫。
進口:
import pandas as pd
創建數據框:
df = pd.read_csv('data.csv', header=None)
df.head()
0
0 126
1 121,123
2 1,7,X28,126,129,130,132,151
3 1,7,X28,126,129,130,151
4 1,7,X28,126,129,130
要列出的字符串:
df_list = df.apply(lambda row: pd.Series(row).str.split(','))
df_list.head()
0
0 [126]
1 [121, 123]
2 [1, 7, X28, 126, 129, 130, 132, 151]
3 [1, 7, X28, 126, 129, 130, 151]
4 [1, 7, X28, 126, 129, 130]
長名單:
df_long = df_list.apply(lambda x: pd.Series(x[0]), axis=1).stack().reset_index(level=1, drop=True)
df_long
0 126
1 121
1 123
2 1
2 7
2 X28
2 126
2 129
2 130
2 132
2 151
3 1
3 7
3 X28
3 126
3 129
3 130
3 151
...
保存到 csv:
df_long.to_csv('results.csv', index=False)
最終程序(4 行):
df = pd.read_csv('ctabuses.csv')
df_routes = df.routes.apply(lambda row: pd.Series(row).str.split(','))
df_routes = df_routes.apply(lambda row: pd.Series(row[0]), axis=1).stack().reset_index(level=1, drop=True)
df_routes.to_csv('results.csv', index=False)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.