简体   繁体   中英

Pandas Dataframe from dict with empty list value

I am trying to read in a dictionary with two keys, the first with a string value and the second with a list of string values. The value containing a list can be (and often is) empty. For example:

{'number': '50', 'box': []}

However, when I try to use DataFrame.from_dict , it gives me an empty DataFrame. I notice that if the 'box' list has multiple elements, DataFrame.from_dict will give me a DataFrame with multiple rows, one for each value in the box list. This appears to be a sort of crossproduct behavior. Is there a way for me to suppress this behavior so that I can generate a DataFrame from the above example with one row, where the column "number" has value '50' and column "box" has value [] ?

I am using Pandas 0.16.2 and Python 2.7.10 via Anaconda 2.3.0 (64-bit Windows).

If you want to make a DataFrame with a single row, you can provide a list with a single dictionary:

df = pd.DataFrame([{'number': '50', 'box': []}])

The from_dict function expects a dict-of-lists, where the keys represent the columns and each value is a list (since DataFrame typically has more than one row) representing the values at each row. The following produces equivalent result using from_dict :

df = pd.DataFrame.from_dict({'number': ['50'], 'box': [[]]})

The documentation page doesn't show many options for this method. Instead of an empty list you could pass it [np.NaN] :

df = pd.DataFrame.from_dict({'number': '50', 'box': [np.NaN]})

which will return a dataframe with one row.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM