很抱歉问了一个很常见的问题。我没有在这个论坛上找到这个问题的重复。
我正在阅读一些.txt文件,每个文件只包含1列值,我创建了一个更大的数据框架来存储它们并处理所有。下面是我的代码的大致样子:
dataPath=os.path.join(os.getcwd(), Project)
data=pd.DataFrame()
for filename in os.listdir(dataPath):
if filename.endswith((".txt")):
columnName=os.path.basename(filename)
df = pd.read_csv(os.path.join(dataPath,filename), index_col=None,header=0,names=[columnName],dtype=float)
data=data.append(df)
因此,您可以看到我正在读取一些文件,将新列命名为filename,并为每个循环附加新帧。当我这样做时,输出是:
Alphas.txt Betas.txt ... Thetas.txt TimeSteps.txt
0 13.08 NaN ... NaN NaN
1 -11.68 NaN ... NaN NaN
2 -26.42 NaN ... NaN NaN
3 57.71 NaN ... NaN NaN
4 -53.81 NaN ... NaN NaN
[5 rows x 6 columns]
但是这些文件是填充的,不应该是NaN。当我在循环中打印df时,它们都显示为数据帧,例如,打印theta得到
Thetas.txt
0 -5.90
1 47.74
2 -7.67
3 77.31
4 18.51
.. ...
112 10.80
113 8.03
114 -56.47
115 -8.46
116 -35.35
[117 rows x 1 columns]
所以我希望最终的data
数据帧完全填充正确的值,而不是NaN。我怀疑我没有传递正确的数据类型,所以我试图在读取.txt文件时指定它。我不知道该怎么做。任何帮助都将非常感激。我应该用concat还是merge呢?
为什么不试试:
dataPath=os.path.join(os.getcwd(), Project)
data=pd.DataFrame()
for filename in os.listdir(dataPath):
if filename.endswith((".txt")):
columnName=os.path.basename(filename)
df = pd.read_csv(os.path.join(dataPath,filename), index_col=None,header=0,names=[columnName],dtype=float)
data[columnName] = df[columnName]
然后现在打印data
将得到预期的结果。