Übergeben Sie Datenrahmen mit True / False von Python im CSV-Format an R (pd.DataFrame-> tbl_df).

Es ist keine große Sache, aber ich war süchtig danach, pandas.DataFrame als csv zu speichern und es mit Rs reader :: tbl_df zu lesen. Notieren Sie sich also die Problemumgehung.

Wenn es um kleine und mittlere Datenrahmen geht, ist es meiner Meinung nach üblich, Pandas für Python und data.frame für R zu verwenden.

Auch das Übergeben von Datenrahmen zwischen Python <=> R kann SQL vermitteln, aber ich denke, CSV ist besser, wenn Sie es einfach machen.

Probleme bei der Lieferung per CSV

Wenn jedoch pandas.DataFrame einschließlich bool so wie es ist an csv ausgespuckt wird, scheint es, dass es mit read \ _csv nicht als logisch gelesen werden kann. So ↓

from datetime import datetime
import pandas as pd

df = pd.DataFrame({
    'A': ('a1', 'a2', 'a3'),
    'B': (True, False, True),
    'C': (0, 1, 2),
    'D': [datetime.now()] * 3
})

df.to_csv('sample.csv', index=False, encoding='utf-8')
library(readr)

read_csv('sample.csv', col_types = 'cliT', locale = locale(encoding = 'UTF-8'))

スクリーンショット 2017-04-23 11.39.05.png

Betrachtet man den Fehler, so scheint es, dass nur T / F, TRUE / FALSE und 0/1 als logisch akzeptiert werden.

Problemumgehung

# df.to_csv('sample.csv', index=False, encoding='utf-8')
(df * 1).to_csv('sample.csv', index=False, encoding='utf-8')

Du kannst es schaffen. Es setzt True / False auf 1/0. \ * Bei einer Zeichenkette handelt es sich um einen Vorgang, bei dem "" hoge "\ * 2" in "" hogehoge "" geändert wird. Selbst wenn Sie diesmal "\ * 1" mögen, ändert sich nichts.

スクリーンショット 2017-04-23 11.44.25.png

Wenn es 01 ist, kann es mit read \ _csv gelesen werden.

スクリーンショット 2017-04-23 11.53.09.png

Fehlerbeispiel

Die folgende Methode schlägt übrigens fehl.

df.astype(int)  #Fehlschlagen, wenn str usw. vorhanden ist.
df.replace({True: 1, False: 0})  #Nichts passiert
df.replace({True: "TRUE", False: "FALSE"})  # 1/0 ist alles in der Zeichenkette(Abbildung unten)

スクリーンショット 2017-04-23 11.50.58.png

(Bitte sag mir, ob es einen anderen guten Weg gibt)

Recommended Posts

Übergeben Sie Datenrahmen mit True / False von Python im CSV-Format an R (pd.DataFrame-> tbl_df).
Lesen von CSVs, die in Python nur Ganzzahlen enthalten
[R] [Python] Memo zum Lesen mehrerer CSV-Dateien in mehreren Zip-Dateien
In der XML-Datenbank (BaseX) gespeichertes XML-Dokument in das CSV-Format konvertieren (mit Python)
So machen Sie R chartr () in Python
Python> Ausgaben von 1 bis 100, 501 bis 600> Für CSV
In Python von Markdown in HTML konvertieren
[Python] Konvertieren von DICOM in PNG oder CSV
Von der Datei zur Diagrammzeichnung in Python. Grundstufe Grundstufe
[Python] Erstellen Sie eine Tabelle von Pandas DataFrame zu Postgres
CSV in Python
Format in Python
Ich möchte in Python schreiben! (1) Überprüfung des Codeformats
App-Entwicklung zum Twittern in Python aus Visual Studio 2017
Speichern Sie CSV auf GCS von der AI-Plattform in DataFrame
So laden Sie Dateien von Selenium of Python in Chrome herunter
Konvertieren / Zurückgeben von Klassenobjekten in das JSON-Format in Python
Führen Sie die Python-Funktion von Powershell aus (wie Sie Argumente übergeben).
Python-Skript, das eine JSON-Datei aus einer CSV-Datei erstellt
Python> Datum / Uhrzeit> Von der Datumszeichenfolge (ISO-Format: 2015-12-09 12:40:08) zum Datum / Uhrzeit-Typ
Ich möchte R-Datensatz mit Python verwenden
Entfernen Sie Überschriften aus CSV-Dateien mit mehreren Formaten mit Python
[Python] Verwenden Sie DataFrame, um beliebige Variablen und Arrays zusammen zu kennzeichnen und in csv [pandas] zu speichern.
26.12.2015 python2> datetime> Implementierung, um die Differenz in Sekunden von zwei datetime-Zeichenfolgen im ISO-Format zu ermitteln> Use .seconds ()