簡體   English   中英

Pandas 從剪貼板讀取帶有日期時間列的 DataFrame

[英]Pandas read DataFrame with datetime columns from clipboard

我看到很多發布到 StackOverflow 的 DataFrames 看起來像:

          a                  dt         b
0 -0.713356 2015-10-01 00:00:00 -0.159170
1 -1.636397 2015-10-01 00:30:00 -1.038110
2 -1.390117 2015-10-01 01:00:00 -1.124016

我仍然沒有找到使用.read_clipboard.read_table docs 中的參數列表)將這些復制到我的解釋器中的好方法。

我認為關鍵是parse_dates參數:

parse_dates : boolean or list of ints or names or list of lists or dict, default False
* boolean. If True -> try parsing the index.
* list of ints or names. e.g. If [1, 2, 3] -> try parsing columns 1, 2, 3 each as a separate date column.
* list of lists. e.g. If [[1, 3]] -> combine columns 1 and 3 and parse as a single date column.
* dict, e.g. {‘foo’ : [1, 3]} -> parse columns 1, 3 as date and call result ‘foo’

pd.read_clipboard(parse_dates={'dt': [1, 2]})引發異常NotImplementedError: file structure not yet supported

當我嘗試跳過第一行pd.read_clipboard(parse_dates=[[1, 2]], names=['a', 'dt1', 'dt2', 'b'], skiprows=1, header=None)我得到相同的異常。

其他人如何做到這一點?

這就是我所做的。 首先,確保您的列之間有兩個空格:

          a                  dt         b
0 -0.713356  2015-10-01 00:00:00  -0.159170
1 -1.636397  2015-10-01 00:30:00  -1.038110
2 -1.390117  2015-10-01 01:00:00  -1.124016

請注意,日期時間列在日期和時間之間有一個空格。 這很重要。 接下來,我使用這樣的東西來加載它:

df = pd.read_clipboard(sep='\s{2,}', parse_dates=[1], engine='python')
df

             a                  dt         b
0  0 -0.713356 2015-10-01 00:00:00 -0.159170
1  1 -1.636397 2015-10-01 00:30:00 -1.038110
2  2 -1.390117 2015-10-01 01:00:00 -1.124016

df.dtypes

a             object
dt    datetime64[ns]
b            float64
dtype: object

是的,這不是一個完全自動化的過程,但只要你處理的是小dataframes復制的,它不是那么糟糕。 盡管我願意看到更好的選擇。

如果它對某人有幫助,這就是我現在要做的:

df = pd.read_clipboard(skiprows=1, names=['a', 'dt1', 'dt2', 'b'])
df['dt'] = pd.to_datetime(df['dt1'] + ' ' + df['dt2'])
df = df[['a', 'dt', 'b']]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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