回答編集履歴
6
iterrows() を使用する方法に変更
test
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
|
1
|
+
以下のコードでは `pandas.DataFrame.iterrows()` を利用して、行ごとにファイル(`ans{i}.txt`)への保存を行います。
|
2
2
|
```python
|
3
3
|
import pandas as pd
|
4
4
|
|
5
|
-
df = pd.read_csv("sample.csv",header=None)
|
5
|
+
df = pd.read_csv("sample.csv", header=None)
|
6
|
-
for j in df[df.any(axis=1)].i
|
6
|
+
for j, row in df[df.any(axis=1)].iterrows():
|
7
7
|
with open(f'ans{j}.txt', 'w') as ans:
|
8
|
-
row = df.iloc[j]
|
9
8
|
for i, value in row[row.ne(0)].items():
|
10
9
|
ans.write(f'{j=}\n{i=}\n{value}\n\n')
|
11
10
|
```
|
5
apply() を使用しない方法に変更
test
CHANGED
@@ -1,16 +1,15 @@
|
|
1
|
-
|
1
|
+
行単位で処理していくのはどうでしょうか。
|
2
2
|
```python
|
3
3
|
import pandas as pd
|
4
4
|
|
5
|
-
d
|
5
|
+
df = pd.read_csv("sample.csv",header=None)
|
6
|
-
|
6
|
+
for j in df[df.any(axis=1)].index:
|
7
7
|
with open(f'ans{j}.txt', 'w') as ans:
|
8
|
-
|
8
|
+
row = df.iloc[j]
|
9
|
+
for i, value in row[row.ne(0)].items():
|
9
|
-
ans.write(f'{j=}\n{i=}\n{
|
10
|
+
ans.write(f'{j=}\n{i=}\n{value}\n\n')
|
11
|
+
```
|
10
12
|
|
11
|
-
df = pd.read_csv("sample.csv",header=None)
|
12
|
-
df.apply(save_data, axis=1)
|
13
|
-
```
|
14
13
|
### 追記
|
15
14
|
|
16
15
|
`numpy.argwhere()` と `itertools.groupby()` を利用する場合です。
|
4
追記
test
CHANGED
@@ -11,4 +11,17 @@
|
|
11
11
|
df = pd.read_csv("sample.csv",header=None)
|
12
12
|
df.apply(save_data, axis=1)
|
13
13
|
```
|
14
|
+
### 追記
|
14
15
|
|
16
|
+
`numpy.argwhere()` と `itertools.groupby()` を利用する場合です。
|
17
|
+
```python
|
18
|
+
import numpy as np
|
19
|
+
import pandas as pd
|
20
|
+
from itertools import groupby
|
21
|
+
|
22
|
+
arr = pd.read_csv("sample.csv",header=None).to_numpy()
|
23
|
+
for j, c_idx in groupby(np.argwhere(arr), key=lambda x: x[0]):
|
24
|
+
with open(f'ans{j}.txt', 'w') as ans:
|
25
|
+
for _, i in c_idx:
|
26
|
+
ans.write(f'j={j}\ni={i}\n{arr[j,i]}\n\n')
|
27
|
+
```
|
3
i と j を取り違えていたのを修正
test
CHANGED
@@ -3,10 +3,10 @@
|
|
3
3
|
import pandas as pd
|
4
4
|
|
5
5
|
def save_data(row):
|
6
|
-
|
6
|
+
j, c_idx = row.name, row[row.ne(0)].index
|
7
|
-
with open(f'ans{
|
7
|
+
with open(f'ans{j}.txt', 'w') as ans:
|
8
|
-
for
|
8
|
+
for i in c_idx:
|
9
|
-
ans.write(f'{j=}\n{i=}\n{row[
|
9
|
+
ans.write(f'{j=}\n{i=}\n{row[i]}\n\n')
|
10
10
|
|
11
11
|
df = pd.read_csv("sample.csv",header=None)
|
12
12
|
df.apply(save_data, axis=1)
|
2
test
CHANGED
@@ -3,12 +3,12 @@
|
|
3
3
|
import pandas as pd
|
4
4
|
|
5
5
|
def save_data(row):
|
6
|
-
r_idx = row.name
|
7
|
-
|
6
|
+
i, c_idx = row.name, row[row.ne(0)].index
|
8
|
-
with open(f'ans{
|
7
|
+
with open(f'ans{i}.txt', 'w') as ans:
|
9
|
-
for
|
8
|
+
for j in c_idx:
|
10
|
-
ans.write(f'j=
|
9
|
+
ans.write(f'{j=}\n{i=}\n{row[j]}\n\n')
|
11
10
|
|
12
11
|
df = pd.read_csv("sample.csv",header=None)
|
13
12
|
df.apply(save_data, axis=1)
|
14
13
|
```
|
14
|
+
|
1
すこし改変。
test
CHANGED
@@ -4,11 +4,10 @@
|
|
4
4
|
|
5
5
|
def save_data(row):
|
6
6
|
r_idx = row.name
|
7
|
-
r_dic = row.to_dict()
|
7
|
+
r_dict = row[row.ne(0)].to_dict()
|
8
8
|
with open(f'ans{r_idx}.txt', 'w') as ans:
|
9
|
-
for c_idx, val in r_dic.items():
|
9
|
+
for c_idx, val in r_dict.items():
|
10
|
-
if val:
|
11
|
-
|
10
|
+
ans.write(f'j={c_idx}\ni={r_idx}\n{val}\n\n')
|
12
11
|
|
13
12
|
df = pd.read_csv("sample.csv",header=None)
|
14
13
|
df.apply(save_data, axis=1)
|