Python 如何将pandas DataFrame转换为特定的带注释的csv格式(内部描述)

Python 如何将pandas DataFrame转换为特定的带注释的csv格式(内部描述),python,pandas,Python,Pandas,如何转换此df: df = pd.DataFrame( [[1, 'world'], [4, 'hello']], columns=['A', 'B'], ) 要删除此字符串,请执行以下操作: 'A=1,B=world\nA=4,B=hello' 其中,中的每一行由一个\n分隔,每一列作为col\u name=col\u value 我尝试的 对于如何以一种非循环和时间合理的方式来处理这一问题,我通常非常困惑 我想的一件事是使用df.to_csv(),然后修改它,但这似乎很快

如何转换此
df

df = pd.DataFrame(
    [[1, 'world'], [4, 'hello']],
    columns=['A', 'B'],
)
要删除此字符串,请执行以下操作:

'A=1,B=world\nA=4,B=hello'
其中,中的每一行由一个
\n
分隔,每一列作为
col\u name=col\u value

我尝试的

对于如何以一种非循环和时间合理的方式来处理这一问题,我通常非常困惑

我想的一件事是使用
df.to_csv()
,然后修改它,但这似乎很快就会变得一团糟


我认为另一种方法是将所有值转换为字符串,并将
col\u name=
添加到每列中,然后执行
.to\u csv()

首先将值转换为dict by列表,对于每个字典,通过
f-string
s使用值连接列,通过
,最后一个连接值通过
//n

a = '\\n'.join(','.join(f'{k}={v}' for k, v in x.items()) 
                                   for x in df.to_dict(orient='records'))
print (a)
A=1,B=world\nA=4,B=hello

首先使用
df.astype
将数据帧的to元素转换为str,然后我们需要在每个元素之前添加
'='
。然后用delim
'、'
连接每个人,并用delim
'\\n'
连接所有人

vals = '=' + df.astype(str).values
cols = df.columns.values
vals = cols[None, :] + vals
vals = np.apply_along_axis(','.join, 1, vals)

out = '\\n'.join(vals)
# A=1,B=world\nA=4,B=hello
细节
vals='='+df.astype(str).values
#数组(['=1','=world'],
#['=4','=hello']],dtype=object)
cols=df.columns.values
VAL=cols[无,:]+VAL
#数组(['A=1','B=world'],
#['A=4','B=hello']],dtype=object)
VAL=np。沿_轴(“,”.连接,1,VAL)应用_

#数组(['A=1,B=world',A=4,B=hello'],dtype='是否可以在生成器表达式中添加
if
else
。我成功地添加了
if
,但在
else
上失败,因此想知道是否可能?@Newskooler将
f{k}={v}更改为
f{k}={v}'“
是生成器中if-else的可能解决方案。
vals = '=' + df.astype(str).values
# array([['=1', '=world'],
#        ['=4', '=hello']], dtype=object)

cols = df.columns.values
vals = cols[None, :] + vals
# array([['A=1', 'B=world'],
#        ['A=4', 'B=hello']], dtype=object)

vals = np.apply_along_axis(','.join, 1, vals)
# array(['A=1,B=world', 'A=4,B=hello'], dtype='<U11')

out = '\\n'.join(vals)
# A=1,B=world\nA=4,B=hello