簡體   English   中英

包含可變長度和逗號分隔的值字符串的熊貓行列如何堆疊成單獨的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM