数据帧列到键值字典对

时间:2017-10-12 20:18:05

标签: python pandas dataframe

我关注DataFrame

                       product             count
Id                                          
175                    '409'                41
175                    '407'                 8
175                    '0.5L'                4
175                    '1.5L'                4
177                    'SCHWEPPES'           6
177                    'TONIC 1L'           4

如何将其转换为以下词典列表:

[{'409':41,'407':8, '0.5L':4, '1.5L':4}, 
 {'SCHWEPPES':6, 'TONIC 1L':4}]

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

In [14]: df.set_index('product').T.to_dict('r')
Out[14]: [{'0.5L': 4, '1.5L': 4, '407': 8, '409': 41, 'SCHWEPPES': 6, 'TONIC 1L': 4}]

答案 1 :(得分:1)

好像你需要import javax.swing.*; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class TwoDimArray { private int arr[][]; public TwoDimArray() { loadArray(); } public void loadArray(){ /** * loadArray() method loads user defined filename * @return text file's contents */ String fileName = ""; try { fileName = JOptionPane.showInputDialog("Enter file name: "); } catch (Exception e){ JOptionPane.showMessageDialog(null, "can not open " + fileName + " to read"); return; } try { Scanner in = new Scanner(new File(fileName)); int rows, cols; rows = in.nextInt(); cols = in.nextInt(); arr = new int[rows][cols]; for(int i = 0; i < rows; ++i){ for(int j = 0; j < cols; ++j){ arr[i][j] = in.nextInt(); } } in.close(); } catch (FileNotFoundException e) { JOptionPane.showMessageDialog(null, "can not open " + fileName + " to read"); } } public int getArrayMaxValue(){ /** * @return the max vale of the array */ int maxVal = Integer.MIN_VALUE; for(int i = 0; i < arr.length; ++i){ for(int j = 0; j < arr.length; ++j){ if(arr[i][j] > maxVal){ maxVal = arr[i][j]; } } } return maxVal; } public int getArrayMinValue(){ /** * @return the minimum value of the array */ int minVal = Integer.MAX_VALUE; for(int i = 0; i < arr.length; ++i){ for(int j = 0; j < arr.length; ++j){ if(arr[i][j] < minVal){ minVal = arr[i][j]; } } } return minVal; } public static int getTotal(int[][] array) { int total = 0; for (int row = 0; row < array.length; row++) { for (int col = 0; col < array[row].length; col++) { total += array[row][col]; } } return total; } public static int getAverage(int[][] array) { return getTotal(array) / getElementCount(array); } public static int getRowTotal(int[][] array, int row) { int total = 0; for (int col = 0; col < array[row].length; col++) { total += array[row][col]; } return total; } public static int getColumnTotal(int[][] array, int col) { int total = 0; for (int row = 0; row < array.length; row++) { total += array[row][col]; } return total; } public static int getHighestInRow(int[][] array, int row) { int highest = array[row][0]; for (int col = 1; col < array[row].length; col++) { if (array[row][col] > highest) { highest = array[row][col]; } } return highest; } public static int getLowestInRow(int[][] array, int row) { int lowest = array[row][0]; for (int col = 1; col < array[row].length; col++) { if (array[row][col] < lowest) { lowest = array[row][col]; } } return lowest; } public static int getElementCount(int[][] array) { int count = 0; for (int row = 0; row < array.length; row++) { count += array[row].length; } return count; } public static void main(String[] args){ /** * what to put in int[][] array to allow println of average, getrowtotal, * etc.. */ int[][] array = ???; TwoDimArray twoDimArray = new TwoDimArray(); System.out.println("Max value: " + twoDimArray.getArrayMaxValue()); System.out.println("Min value: " + twoDimArray.getArrayMinValue()); System.out.println(getAverage(array)); } 索引

groupby

以列表形式输出

df.groupby(level='Id').apply(lambda x : x.set_index('product').T.to_dict(orient='records'))
Out[124]: 
Id
175    [{''409'': 41, ''407'': 8, ''0.5L'': 4, ''1.5L...
177                 [{''SCHWEPPES'': 6, ''TONIC1L'': 4}]
dtype: object

制作一份清单

df.groupby(level='Id').apply(lambda x : x.set_index('product').T.to_dict(orient='records')).tolist()
Out[128]: 
[[{"'0.5L'": 4, "'1.5L'": 4, "'407'": 8, "'409'": 41}],
 [{"'SCHWEPPES'": 6, "'TONIC1L'": 4}]]