Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫-格式化数据帧行不起作用_Python_Python 3.x_Pandas_Formatting - Fatal编程技术网

Python 熊猫-格式化数据帧行不起作用

Python 熊猫-格式化数据帧行不起作用,python,python-3.x,pandas,formatting,Python,Python 3.x,Pandas,Formatting,我试图格式化数据帧的行,但没有成功 我的数据帧输出是: X Y 443 cd2a9dd781c1396d4000ae05fcc3a0b00a5dc4f9 889.825 111 ae3faf7ed08967e93d5f5ed6e10a5b256ec8c7fa 883.275 221 601f669c760687b84ec57fe1eec213e261

我试图格式化数据帧的行,但没有成功

我的数据帧输出是:

                       X                              Y
443   cd2a9dd781c1396d4000ae05fcc3a0b00a5dc4f9     889.825    
111   ae3faf7ed08967e93d5f5ed6e10a5b256ec8c7fa     883.275    
221   601f669c760687b84ec57fe1eec213e26114a262     868.345   
631   80f54ce2aa2839e80cd5447cb369ec31f5e1fd47     867.545   
我希望输出的格式如下:

{"X": "cd2a9dd781c1396d4000ae05fcc3a0b00a5dc4f9", "Y": 889.8}
{"X": "ae3faf7ed08967e93d5f5ed6e10a5b256ec8c7fa", "Y": 883.2}
我试过:

format = '{"X": "{}", "Y": {%.1f}}'.format
my_df.apply(lambda x: format(**x), 1)
以及:

以及:

没有一个对我有用。最后一次尝试(
to_string
)返回以下错误:

文件“/usr/local/lib/python3.5/dist packages/pandas/io/formats/format.py”,第1781行,在get_result中
fmt_values=self._format_strings()
文件“/usr/local/lib/python3.5/dist packages/pandas/io/formats/format.py”,第1961行,格式为字符串
返回[self.values中x的self.formatter(x)]
文件“/usr/local/lib/python3.5/dist packages/pandas/io/formats/format.py”,第1961行,在
返回[self.values中x的self.formatter(x)]
键错误:“'

有什么建议/帮助吗?

试试看

my_df.to_dict(orient='records')

对于我来说,使用更改的最后一个解决方案:

如果可能需要新的格式列,请使用列表理解:

df['new'] = ['"X": "{}", "Y": {:.1f}'.format(i, j) for i, j in zip(df['X'], df['Y'])]
print (df)
                                            X        Y  \
443  cd2a9dd781c1396d4000ae05fcc3a0b00a5dc4f9  889.825   
111  ae3faf7ed08967e93d5f5ed6e10a5b256ec8c7fa  883.275   
221  601f669c760687b84ec57fe1eec213e26114a262  868.345   
631  80f54ce2aa2839e80cd5447cb369ec31f5e1fd47  867.545   

                                                   new  
443  "X": "cd2a9dd781c1396d4000ae05fcc3a0b00a5dc4f9...  
111  "X": "ae3faf7ed08967e93d5f5ed6e10a5b256ec8c7fa...  
221  "X": "601f669c760687b84ec57fe1eec213e26114a262...  
631  "X": "80f54ce2aa2839e80cd5447cb369ec31f5e1fd47...  

成功了。但X值打印为“cd2a9dd781c1396d4000ae05fcc3a…”,这是不完整的。为了输出完整的字符串,我可以做什么?“cd2a9dd781c1396d4000ae05fcc3a0b00a5dc4f9”而不是“cd2a9dd781c1396d4000ae05fcc3a…”?谢谢。@Dalton Cézane这是显示问题,解决方案是
my_df.to_dict(orient='records')
df = df.to_string(formatters={'X':'"X": "{}",'.format, 'Y':'"Y": {:.1f}'.format})
print (df)
                                                    X          Y
443  "X": "cd2a9dd781c1396d4000ae05fcc3a0b00a5dc4f9", "Y": 889.8
111  "X": "ae3faf7ed08967e93d5f5ed6e10a5b256ec8c7fa", "Y": 883.3
221  "X": "601f669c760687b84ec57fe1eec213e26114a262", "Y": 868.3
631  "X": "80f54ce2aa2839e80cd5447cb369ec31f5e1fd47", "Y": 867.5
df['new'] = ['"X": "{}", "Y": {:.1f}'.format(i, j) for i, j in zip(df['X'], df['Y'])]
print (df)
                                            X        Y  \
443  cd2a9dd781c1396d4000ae05fcc3a0b00a5dc4f9  889.825   
111  ae3faf7ed08967e93d5f5ed6e10a5b256ec8c7fa  883.275   
221  601f669c760687b84ec57fe1eec213e26114a262  868.345   
631  80f54ce2aa2839e80cd5447cb369ec31f5e1fd47  867.545   

                                                   new  
443  "X": "cd2a9dd781c1396d4000ae05fcc3a0b00a5dc4f9...  
111  "X": "ae3faf7ed08967e93d5f5ed6e10a5b256ec8c7fa...  
221  "X": "601f669c760687b84ec57fe1eec213e26114a262...  
631  "X": "80f54ce2aa2839e80cd5447cb369ec31f5e1fd47...