回答編集履歴
1
edit
test
CHANGED
@@ -1 +1,85 @@
|
|
1
|
+
焦っている気持ちはわかりますが、
|
2
|
+
|
3
|
+
CSVファイルをコピーしやすい状態にする、データのバリエーションについて、などより多くの情報を先に提示することによって、解決に近づくことが楽になります。
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
アカウント名について、半角から始まることを仮定しました。
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
```python
|
12
|
+
|
13
|
+
import pandas as pd
|
14
|
+
|
15
|
+
import numpy as np
|
16
|
+
|
17
|
+
import re
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
from io import StringIO
|
22
|
+
|
23
|
+
# CSVファイルがないので、見えているものを手で入れました。
|
24
|
+
|
25
|
+
a = StringIO('''A,B,C,D,E,F,G,H,I
|
26
|
+
|
27
|
+
0,2011/3/11,19:57:54,eiden33,ちょっとイソジンかって放射能対策してくる。,,None,None,None,None
|
28
|
+
|
29
|
+
1,2011/3/11,20:02:34,BELx2TOKYOJAPAN,外部電源が無いですが電源車で復旧だそうです。放射能漏れは無いとのことだけど柏崎原発の時も隠蔽してたので、納豆,コンブ,イソジン(ヨウ素剤)を用意していおきましょう!ヨウ素の摂取量です。甲状腺に異常のある人はヨウ素取りすぎないようにhttp://www.nuketext.or...,,None,None,None,None
|
30
|
+
|
31
|
+
3501,2011/4/1,11:48:22,shiori_ayase,今日は、イソジン買って帰る。・・・いや、放射線対策じゃなくてね、のどが痛いんだよ、うがい薬が欲しいんだよ!!,,None,None,None,None
|
32
|
+
|
33
|
+
3502,2011/4/2,12:05:15,,enjoy_cacao,logic_text,,陰毛がチリチリして来た気がするのも、やはり放射能の影響でしょうか。イソジントリートメントでケアしなくては…。,,None''')
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
# read CSV file
|
38
|
+
|
39
|
+
df = pd.read_csv(a)
|
40
|
+
|
41
|
+
# possible account parts
|
42
|
+
|
43
|
+
cols = df.columns[2:]
|
44
|
+
|
45
|
+
# fill NaNs
|
46
|
+
|
47
|
+
df = df.fillna('')
|
48
|
+
|
49
|
+
# get account name with assumption, else fill with ''
|
50
|
+
|
51
|
+
df.loc[:, cols] = df[cols].apply(lambda ss: [next(iter(re.findall('^[a-zA-Z0-9_]{2,15}', str(s))), '') or '' for s in ss], axis=1)
|
52
|
+
|
53
|
+
# replace 'None' with ''
|
54
|
+
|
55
|
+
df = df.replace(to_replace='None', value='')
|
56
|
+
|
57
|
+
# replace '' for NaN to drop
|
58
|
+
|
59
|
+
df = df.replace(to_replace='', value=np.nan)
|
60
|
+
|
61
|
+
# record column names
|
62
|
+
|
63
|
+
cols = df.columns
|
64
|
+
|
65
|
+
# drop NaNs and shift to left
|
66
|
+
|
67
|
+
df = df.apply(lambda x: pd.Series(x.dropna().values), axis=1).fillna('')
|
68
|
+
|
69
|
+
# use recored column names
|
70
|
+
|
71
|
+
df.columns = cols[:len(df.columns)]
|
72
|
+
|
73
|
+
# answer is in df
|
74
|
+
|
75
|
+
print(df)
|
76
|
+
|
77
|
+
```
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
---
|
82
|
+
|
83
|
+
|
84
|
+
|
1
85
|
見えている限り`dema_df[['A','B','C']]`で目的は果たされませんか?
|