嘿伙计们,我有一个看起来像这样的数据 train.dat 。我正在尝试创建一个变量,该变量将包含包含(-1或1)的列的第[ith]值,以及另一个变量来保存具有字符串的列的值。
到目前为止我已经尝试过了,
df=pd.read_csv("train.dat",delimiter="\t", sep=',')
# print(df.head())
# separate names from classes
vals = df.ix[:,:].values
names = [n[0][3:] for n in vals]
cls = [n[0][0:] for n in vals]
print(cls)
但是输出看起来很困惑,任何帮助将不胜感激。我是Python初学者
最佳答案
如果数值后面的字符是制表符,那就没问题,您所需要的只是
import io # using io.StringIO for demonstration
import pandas as pd
ratings = "-1\tThis movie really sucks.\n-1\tRun colored water through
a reflux condenser and call it a science movie?\n+1\tJust another zombie flick? You'll be surprised!"
df = pd.read_csv(io.StringIO(ratings), sep='\t',
header=None, names=['change', 'rating'])
- 传递
header=None
可确保第一行被解释为数据。 - 传递
names=['change', ' rating']
提供了一些(合理的)列标题。
当然,这个字符不是制表符:D。
import io # using io.string
import pandas as pd
ratings = "-1 This movie really sucks.\n-1 Run colored water through a
reflux condenser and call it a science movie?\n+1 Just another zombie
flick? You'll be surprised!"
df = pd.read_csv(io.StringIO(ratings), sep='\t',
header=None, names=['stuff'])
df['change'], df['rating'] = df.stuff.str[:3], df.stuff.str[3:]
df.drop('stuff', axis=1)
一个可行的选择是将整个评级作为一个临时列读取,拆分字符串,将其分配到两列,最后删除临时列。
关于python - 如何将数据分离到 pandas 中的不同变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46656594/