Python 熊猫:如何使用数据框中的数据作为路径/文件名的一部分写入csv文件

Python 熊猫:如何使用数据框中的数据作为路径/文件名的一部分写入csv文件,python,pandas,Python,Pandas,熊猫:如何使用数据框中的数据作为路径/文件名的一部分写入csv文件 data2 = {'filepath': ['C:\\test\\testsub\\testfile.csv']} path = pd.DataFrame(data2, columns=['filepath']) print path filepath 0 C:\test\testsub\testfile.csv 我有这样一个数据帧示例: df = pd.DataFrame(n

熊猫:如何使用数据框中的数据作为路径/文件名的一部分写入csv文件

data2 = {'filepath': ['C:\\test\\testsub\\testfile.csv']}
path = pd.DataFrame(data2, columns=['filepath'])
print path

                       filepath
0  C:\test\testsub\testfile.csv
我有这样一个数据帧示例:

df = pd.DataFrame(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
print df

          0
a -0.899348
b  0.297170
c -0.998461
d  0.651564
e  2.013107
df.to_csv('C:\\test\\testsub\\testfile.csv')
以及第二个数据帧,其中一列包含完整路径/文件名

data2 = {'filepath': ['C:\\test\\testsub\\testfile.csv']}
path = pd.DataFrame(data2, columns=['filepath'])
print path

                       filepath
0  C:\test\testsub\testfile.csv
我可以将第一个数据帧写入csv,如下所示:

df = pd.DataFrame(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
print df

          0
a -0.899348
b  0.297170
c -0.998461
d  0.651564
e  2.013107
df.to_csv('C:\\test\\testsub\\testfile.csv')
但是我找不到从“path”数据框设置路径/文件名的方法

df.to_csv(path['filepath'])
…返回一个错误:

'TypeError: coercing to Unicode: need string or buffer, list found'
数据帧似乎需要某种形式的转换才能在这里使用。我找不到这方面的任何信息。有人能告诉我怎样才能使这项工作成功吗?感谢您的帮助


(在大图中,该过程是循环的一部分,其中所需的路径/文件名在数据框“path”中返回。我可以按原样打印路径和文件名,但我无法写入csv)

您只需确保从
文件路径
列中提取单个元素,而不是将整个列作为文件名传递。您可以使用像
.ix[]
.iloc[]
这样的索引方法来实现这一点:

current_filepath = path['filepath'].iloc[0]

current_filepath
Out[8]: 'C:\\test\\testsub\\testfile.csv'

df.to_csv(current_filepath)
由于示例数据帧
path
只有整数索引,因此您还可以执行以下操作:

path['filepath'][0]

但是,如果您有不同的索引,这将不会以相同的方式工作。

非常感谢您的帮助。你的建议非常适合这个例子。您指出,该解决方案不适用于不同的索引,并且我意识到我的示例中仅使用一行是不够的。此解决方案是否适用于具有多行的数据帧?@user2904588:在
current\u filepath=path['filepath']中。iloc[0]
0
仅表示行号。如果您循环查看行号并使用
current\u filepath=path['filepath'].iloc[row\u num]
,它应该可以工作。再次感谢马吕斯,我仍然没有得到这一点--我可以问你更多的细节吗?我不知道如何同步行号。例如,您的示例中的循环是
for row_num in?
好的,谢谢您的帮助。原来的答案很好,值得赞赏,我的错是原来的问题没有充分反映我的要求。