我有一个看起来像这样的数据集:
id keyPhrases
0 [word1, word2]
1 [word4, word 5 and 6, word7]
2 [word8, etc, etc
“ keyPhrases”中的每个值都是一个列表。 我想将每个列表扩展到新行(字符串)
“ id”列现在并不重要。
已经尝试过df.values,from_records等
预期:
keyPhrases
word1
word2
word3
word4
答案 0 :(得分:2)
您可以结合使用itertools.chain和数据框列选择:
import itertools
df = pd.DataFrame({
'keyPhrases': [
['word1', 'word2'],
['word4', 'word5', 'word7'],
['word8', 'word9']
],
'id': [1,2,3]
})
for elem in itertools.chain.from_iterable(df['keyPhrases'].values):
print(elem)
将打印:
word1
word2
word4
word5
word7
word8
word9
答案 1 :(得分:2)
np.concatenate(df.keyPhrases) #data courtesy vurmux
array(['word1', 'word2', 'word4', 'word5', 'word7', 'word8', 'word9'],
dtype='<U5')
另一种方式:
import functools
import operator
functools.reduce(operator.iadd, df.keyPhrases, [])
#['word1', 'word2', 'word4', 'word5', 'word7', 'word8', 'word9']
答案 2 :(得分:2)
一种有趣的方式,但不推荐
df.keyPhrases.sum()
Out[520]: ['word1', 'word2', 'word4', 'word5', 'word7', 'word8', 'word9']
答案 3 :(得分:1)
// Doesn't have to be an anonymous class
Task<String> task = new Task<>() {
@Override
protected String call() {
System.out.println("test");
return "test2";
}
});
task.runningProperty().addListener((obs, wasRunning, isRunning) -> {
if (isRunning) {
showSpinner();
} else {
hideSpinner();
}
});
task.setOnSucceeded(event -> {
String a = task.getValue();
// Do something with value.
});
executorService.execute(task);
答案 4 :(得分:1)
上面给出的有关numpy库的答案确实非常好,但是我通过放置一个网格而不是性能代码,而是以最简单的方式来理解它。
import pandas as pd
lista = [[['word1', 'word2']], [['word4', 'word5', 'word6', 'word7']], [['word8', 'word9', 'word10']]]
df = pd.DataFrame(lista, columns=['keyPhrases'])
list = []
for key in df.keyPhrases:
for element in key:
list.append(element)
list
答案 5 :(得分:1)
numpy和itertools方法都可以正常工作。
我最终使用了itertools方法,并使用来将每一行写入文件。
它为我节省了很多时间和代码。
非常感谢!
for elem in itertools.chain.from_iterable(df['keyPhrases'].values):
textfile.write(elem + "\n")
答案 6 :(得分:1)
找到另一种方法:
df['keyPhrases'] = df['keyPhrases'].str.split(',') #to make arrays
df['keyPhrases'] = df['keyPhrases'].astype(str) #back to strings
s=''.join(df.keyPhrases).replace('[','').replace(']','\n').replace(',','\n') #replace magic
print(s)
word1
word2
word4
word 5 and 6
word7
word8
etc
etc
答案 7 :(得分:1)
我不确定任何现有功能都可以在单行代码中完成。下面的代码变通可以解决您的需求。如果还有其他内置函数可以轻松完成此任务,我将很高兴知道。
<Route
exact
path="/something/:id"
render={(props)=> (
<ProfileUser
key={props.match.params.id}
id={props.match.params.id}
{...props}
/>
)}
/>
This link可以帮助您满足要求。