Pandas 带分隔符的数据框到字符串
Pandas Dataframe to String with separator
我想将数据框转换为字符串。
这个话题很接近我想要的。这个解决方案的唯一问题:我有一个带有分隔符的字符串的 'Country' 列(例如,使用这个解决方案,数据框正在转换为字符串,但我有 'United States' 变成 'United,States' )
所以目前我只有以下代码:
df = df.to_string(index=False).split('\n')
df = [','.join(ele.split()) for ele in df]
df = '\r\n'.join(df)
df = df.encode('utf8')
但是对于像这样的数据框:
data = [['United States', 10, 12], ['United Kingdom', 15, 25], ['France', 14, 18]]
df = pd.DataFrame(data, columns = ['Country', 'Number1', 'Number2'])
我会
b'Country,Number1,Number2\r\nUnited,States,10,12\r\n,United,Kingdom,15,25\r\nFrance,14,18'
而不是:
b'Country,Number1,Number2\r\nUnited States,10,12\r\n,United Kingdom,15,25\r\nFrance,14,18'
目前我已经解决了很多问题:
df= df.replace('United,States', 'United States')
但这不是一个很好的解决方案,因为每次出现 space 的新国家时,我都必须更新脚本
(最终目标是将 dataframe 转换为 utf-8 中的字符串以允许计算它的 md5,而不使用 df.to_csv() 并计算创建的文件的 md5,如果你有更好的比这个技巧还可以帮助我的方法)
谢谢!
data = [['United States', 10, 12], ['United Kingdom', 15, 25], ['France', 14, 18]]
df = pd.DataFrame(data, columns = ['Country', 'Number1', 'Number2'])
df = df.to_csv(header=None, index=False).strip('\n').split('\n')
df_string = '\r\n'.join(df) # <= this is the string that you can use with md5
df_bytes = df_string.encode('utf8') # <= this is bytes object to write the file
print(df_bytes)
对md5和df_bytes
使用df_string
写入文件。
df_bytes
包含这个:
b'United States,10,12\r\nUnited Kingdom,15,25\r\nFrance,14,18'
不发送到 csv 的变体:
import pandas as pd
data = [['United States', 10, 12], ['United Kingdom', 15, 25], ['France', 14, 18]]
df = pd.DataFrame(data, columns = ['Country', 'Number1', 'Number2'])
df['Country']=df['Country'].str.replace(' ','_')
df = df.to_string(index=False).split('\n')
df = [','.join(ele.split()) for ele in df]
df = [element.replace('_',' ') for element in df]
df = '\r\n'.join(df)
df = df.encode('utf8')
df
我想将数据框转换为字符串。
这个话题
df = df.to_string(index=False).split('\n')
df = [','.join(ele.split()) for ele in df]
df = '\r\n'.join(df)
df = df.encode('utf8')
但是对于像这样的数据框:
data = [['United States', 10, 12], ['United Kingdom', 15, 25], ['France', 14, 18]]
df = pd.DataFrame(data, columns = ['Country', 'Number1', 'Number2'])
我会
b'Country,Number1,Number2\r\nUnited,States,10,12\r\n,United,Kingdom,15,25\r\nFrance,14,18'
而不是:
b'Country,Number1,Number2\r\nUnited States,10,12\r\n,United Kingdom,15,25\r\nFrance,14,18'
目前我已经解决了很多问题:
df= df.replace('United,States', 'United States')
但这不是一个很好的解决方案,因为每次出现 space 的新国家时,我都必须更新脚本
(最终目标是将 dataframe 转换为 utf-8 中的字符串以允许计算它的 md5,而不使用 df.to_csv() 并计算创建的文件的 md5,如果你有更好的比这个技巧还可以帮助我的方法) 谢谢!
data = [['United States', 10, 12], ['United Kingdom', 15, 25], ['France', 14, 18]]
df = pd.DataFrame(data, columns = ['Country', 'Number1', 'Number2'])
df = df.to_csv(header=None, index=False).strip('\n').split('\n')
df_string = '\r\n'.join(df) # <= this is the string that you can use with md5
df_bytes = df_string.encode('utf8') # <= this is bytes object to write the file
print(df_bytes)
对md5和df_bytes
使用df_string
写入文件。
df_bytes
包含这个:
b'United States,10,12\r\nUnited Kingdom,15,25\r\nFrance,14,18'
不发送到 csv 的变体:
import pandas as pd
data = [['United States', 10, 12], ['United Kingdom', 15, 25], ['France', 14, 18]]
df = pd.DataFrame(data, columns = ['Country', 'Number1', 'Number2'])
df['Country']=df['Country'].str.replace(' ','_')
df = df.to_string(index=False).split('\n')
df = [','.join(ele.split()) for ele in df]
df = [element.replace('_',' ') for element in df]
df = '\r\n'.join(df)
df = df.encode('utf8')
df