これは本当に簡単なことではありません。あなたがする必要はあり:
import itertools
data = row['record']['cells']['YOUR COLUMN NAME']['value']
x = itertools.count(2)
liste = []
for i, el in enumerate(data):
if data[i] == "x":
liste.append(x.next())
else:
x = itertools.count(2)
liste.append(el)
return ",".join([str(x) for x in liste])
:
1は、このような "X"
2として何か他のもの、との空白を交換して、データセット全体
3使用するため、このJythonスクリプトを一意のレコードを作成します。
4空白を使用して複製をクリアします
5最初の複数値セルを分割します。
ここでは、上記の操作のスクリーンキャストです。
![enter image description here](https://i.stack.imgur.com/ftgeo.gif)
あなたは少しのPythonを知っていれば、あなたもpandas
を使用してファイルを変換することができます。私はそれを行う最もエレガントな方法は何か分かりませんが、このスクリプトはうまくいくはずです。
import itertools
import pandas as pd
x = itertools.count(2)
def set_x():
global x
x = itertools.count(2)
set_x()
def increase(value):
if not value:
return next(x)
else:
set_x()
return value
data = pd.read_csv("your_file.csv", na_values=['nan'], keep_default_na=False)
data['column 1'] = data['column 1'].apply(lambda row: increase(row))
print(data)
data.to_csv("final_file.csv")
ありがとうございます。上記のOpenRefineオプションは、私が望んだことを完全に行わないようです。限り、私はそれが増加するカウンターではない値を埋めることを伝えることができます。たとえば、5つの空白のセルがある場合、2,3,4,5,6ではなく1,2,3,1,2で塗りつぶします。私はちょうどあなたが提案するようにPythonまたはRでそれを行うかもしれません。ありがとう。 –
@EduardGeistこれはまさにそれです:最初のセルxは2で置き換えられ、2番目のセルは3で置き換えられます。そして、あなたの例とまったく同じように、1が現れるたびにカウンタが2にリセットされます。 –
申し訳ありません、はい!これを理解してくれてありがとう。 –